PlotterHMI/datafile/dxf/dxflib/ReadAutoCAD.h

486 lines
12 KiB
C
Raw Permalink Normal View History

#if !defined (READAUTCAD_H)
#define READAUTCAD_H
#pragma once
#include "PDSMath/StdAfx.h"
#include <iostream>
//#include <afxtempl.h>
#include "GroupCode.h"
/////////////////////////////////Start: CDimension/////////////////////////////////////////
//<2F><>ע<EFBFBD><D7A2><EFBFBD>룬 Ŀǰֻʶ<D6BB><CAB6>һ<EFBFBD>ֱ<EFBFBD>ע
class CDimension : public CGroupCode
{
public:
int m_iType; // -1 = <20><>ʼ<EFBFBD><CABC>ֵ
// 0 = ת<>DZ<EFBFBD>ע<EFBFBD><D7A2>ˮƽ<CBAE><C6BD>ע<EFBFBD><D7A2><EFBFBD><EFBFBD>ֱ<EFBFBD><D6B1>ע
// 1 = <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ע
// 2 = <20>Ƕȱ<C7B6>ע
// 3 = ֱ<><D6B1><EFBFBD><EFBFBD>ע
// 4 = <20><EFBFBD><EBBEB6>ע
// 5 = <20>Ƕ<EFBFBD><C7B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ע
// 6 = <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ע
// 32 = <20><>ע<EFBFBD><D7A2>Ϣ<EFBFBD>ڸ<EFBFBD><DAB8><EFBFBD><EFBFBD>Ŀ<EFBFBD><C4BF><EFBFBD>
CString m_strBlockName;
CPointData m_ptLU; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE>λ<EFBFBD><CEBB>
//<2F><>ע<EFBFBD><D7A2><EFBFBD><EFBFBD>ʾλ<CABE><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
CPointData m_ptPoint0;
CPointData m_ptPoint1;
CPointData m_ptPoint2;
CPointData m_ptPoint3;
CPointData m_ptPoint4;
CPointData m_ptPoint5;
CPointData m_ptPoint6;
BOOL m_bNoString; //=true <20><>ʾ<EFBFBD><CABE>עû<D7A2><C3BB><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD>ݼ<EFBFBD><DDBC><EFBFBD><EFBFBD>õ<EFBFBD><C3B5><EFBFBD> false <20><>ע<EFBFBD>ַ<EFBFBD><D6B7><EFBFBD>Ϊm_strDimension
CString m_strDimension; //<2F>û<EFBFBD><C3BB><EFBFBD>ȷ<EFBFBD><C8B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˱<EFBFBD>ע<EFBFBD><D7A2><EFBFBD>֣<EFBFBD><D6A3><EFBFBD>ѡ<EFBFBD><D1A1>ȱʡֵΪ<D6B5><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>Ϊ<EFBFBD>ջ<EFBFBD>"<>"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD>ʽ<EFBFBD><CABD>ע<EFBFBD><D7A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>Ϊ " "<22><>һ<EFBFBD><D2BB><EFBFBD>ո񣩣<D5B8><F1A3A9A3><EFBFBD>ֹ<EFBFBD><D6B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
public:
CDimension(void);
CDimension(CDimension& a);
~CDimension(void);
BOOL operator==(CDimension& a);
void operator=(CDimension& a);
void Initial(void);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5>
// true <20><><EFBFBD>ݿ<EFBFBD><DDBF><EFBFBD> <20><>=false<73><65><EFBFBD>ݲ<EFBFBD><DDB2><EFBFBD><EFBFBD><EFBFBD>
BOOL DisPoseReadData();
//<2F><><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD>
//˵<><CBB5><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD>"{\fSimSun|b0|i0|c134|p2;<3B><><EFBFBD><EFBFBD>}"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ"<22><><EFBFBD><EFBFBD>"
void DisPoseText(CString &strString);
//<2F><>ע<EFBFBD><D7A2><EFBFBD><EFBFBD>ƫ<EFBFBD><C6AB>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//dOffsetX/dOffsetY ƫ<><C6AB><EFBFBD><EFBFBD>
//dSin/dCos <20><>ת<EFBFBD>Ƕȣ<C7B6> <20><>ת<EFBFBD><D7AA>ΪCPoint(0,0), ˮƽΪ<C6BD><CEAA><EFBFBD><EFBFBD>
//dScaleX/dScaleY <20>Ŵ<EFBFBD><C5B4><EFBFBD>С 20220408 XQ
//˵<><CBB5><EFBFBD><EFBFBD>
// ƫ<><C6AB>-><3E><>ת-><3E>Ŵ<EFBFBD><C5B4><EFBFBD>С
void SetRotateOffset(double dOffsetX, double dOffsetY, double dSin, double dCos, double dScaleX, double dScaleY);
//<2F><><EFBFBD><EFBFBD>עת<D7A2><D7AA><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD>Ϣ
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// TextData <20>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD>Ϣ
void TransText(CTextData &TextData);
};
class CDimensionList : public CList<CDimension,CDimension&>
{
public:
CDimensionList& operator=(CDimensionList& rhs); // <20><>ֵ
//<2F><>ȡָ<C8A1><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD>ϵ<EFBFBD><CFB5><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
// iIndex <20><><EFBFBD><EFBFBD>ֵ,<2C><>0<EFBFBD><30>ʼ,<2C><><EFBFBD><EFBFBD>Խ<EFBFBD><D4BD>
//<2F><><EFBFBD><EFBFBD>ֵ:
CDimension& operator[](int iIndex);
//<2F><>עλ<D7A2><CEBB>ƫ<EFBFBD><C6AB>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//dOffsetX/dOffsetY ƫ<><C6AB><EFBFBD><EFBFBD>
//dSin/dCos <20><>ת<EFBFBD>Ƕȣ<C7B6> <20><>ת<EFBFBD><D7AA>ΪCPoint(0,0), ˮƽΪ<C6BD><CEAA><EFBFBD><EFBFBD>
//dScaleX/dScaleY <20>Ŵ<EFBFBD><C5B4><EFBFBD>С 20220408 XQ
//˵<><CBB5><EFBFBD><EFBFBD>
// ƫ<><C6AB>-><3E><>ת-><3E>Ŵ<EFBFBD><C5B4><EFBFBD>С
void SetRotateOffset(double dOffsetX, double dOffsetY, double dSin, double dCos, double dScaleX, double dScaleY);
//<2F><><EFBFBD><EFBFBD>עת<D7A2><D7AA><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD>
void TransText(CTextDataList &listTextData);
};
//////////////////////////////////End: CDimension////////////////////////////////////////
//////////////////////////////////Start: CSolidInfor////////////////////////////////////////
class CSolidInfor : public CGroupCode
{
public:
CCurveNotchInfor m_CurveInfor;
public:
CSolidInfor(void);
CSolidInfor(CSolidInfor& a);
~CSolidInfor(void);
void operator=(CSolidInfor& a);
void Initial(void);
//<2F><><EFBFBD><EFBFBD>ƫ<EFBFBD><C6AB>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//dOffsetX/dOffsetY ƫ<><C6AB><EFBFBD><EFBFBD>
//dSin/dCos <20><>ת<EFBFBD>Ƕȣ<C7B6> <20><>ת<EFBFBD><D7AA>ΪCPoint(0,0), ˮƽΪ<C6BD><CEAA><EFBFBD><EFBFBD>
//dScaleX/dScaleY <20>Ŵ<EFBFBD><C5B4><EFBFBD>С 20220408 XQ
//˵<><CBB5><EFBFBD><EFBFBD>
// ƫ<><C6AB>-><3E><>ת-><3E>Ŵ<EFBFBD><C5B4><EFBFBD>С
void SetRotateOffset(double dOffsetX, double dOffsetY, double dSin, double dCos, double dScaleX, double dScaleY);
//<2F><><EFBFBD>÷Ŵ<C3B7>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//dScale <20>Ŵ<EFBFBD><C5B4><EFBFBD>С<EFBFBD><D0A1><EFBFBD><EFBFBD>
//void SetScale(double dScale);
};
class CSolidInforList : public CList<CSolidInfor,CSolidInfor&>
{
public:
CSolidInforList& operator=(CSolidInforList& rhs); // <20><>ֵ
//<2F><>ȡָ<C8A1><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD>ϵ<EFBFBD><CFB5><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
// iIndex <20><><EFBFBD><EFBFBD>ֵ,<2C><>0<EFBFBD><30>ʼ,<2C><><EFBFBD><EFBFBD>Խ<EFBFBD><D4BD>
//<2F><><EFBFBD><EFBFBD>ֵ:
CSolidInfor& operator[](int iIndex);
//<2F><>עλ<D7A2><CEBB>ƫ<EFBFBD><C6AB>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//dOffsetX/dOffsetY ƫ<><C6AB><EFBFBD><EFBFBD>
//dSin/dCos <20><>ת<EFBFBD>Ƕȣ<C7B6> <20><>ת<EFBFBD><D7AA>ΪCPoint(0,0), ˮƽΪ<C6BD><CEAA><EFBFBD><EFBFBD>
//dScaleX/dScaleY <20>Ŵ<EFBFBD><C5B4><EFBFBD>С 20220408 XQ
//˵<><CBB5><EFBFBD><EFBFBD>
// ƫ<><C6AB>-><3E><>ת-><3E>Ŵ<EFBFBD><C5B4><EFBFBD>С
void SetRotateOffset(double dOffsetX, double dOffsetY, double dSin, double dCos, double dScaleX, double dScaleY);
//<2F>õ<EFBFBD><C3B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
void GetCurveInforList(CCurveNotchInforList &listCurveInfor);
};
///////////////////////////////////End: CSolidInfor///////////////////////////////////////
//////////////////////////////////////////////////////////////////////////
//Auto CAD<41>п<EFBFBD><D0BF><EFBFBD>Ϣ
class CAuBlockInfor : public CObject
{
public:
CString m_strBlockName; //Ϊ<>˼<EFBFBD>¼BLOCK<43>Ŀ<EFBFBD><C4BF><EFBFBD>(<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>2<EFBFBD>ĺ<EFBFBD><C4BA><EFBFBD>)
CString m_strPatternName; //ֽ<><D6BD><EFBFBD><EFBFBD>
CString m_strSizeName; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
CStringArray m_arrMaterial; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
CUIntArray m_arrQuantity; //<2F><>Ƭ<EFBFBD><C6AC><EFBFBD>Ϸ<EFBFBD><CFB7><EFBFBD> Quantity:<R,L>
//ֽ<><D6BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD>˷<EFBFBD>ֹ<EFBFBD>ͻ<EFBFBD>ʹ<EFBFBD><CAB9>AutoCAD<41><44>ASTM/TIIP<49>ļ<EFBFBD>
CCurveNotchInforList m_listCurveInfo; //<2F><><EFBFBD>е<EFBFBD><D0B5><EFBFBD><EFBFBD><EFBFBD>Ϣ
CTextDataList m_listTextData; //<2F><>¼<EFBFBD><C2BC>־<EFBFBD><D6BE>ΪTEXT/MTEXT<58><54><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
CPointDataList m_listPointInfo; //<2F><><EFBFBD>е<EFBFBD> <20><>¼POINT<4E><54><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
CDimensionList m_listDimension; //<2F><>ע<EFBFBD><D7A2>Ϣ
CSolidInforList m_listSolidInfor; //ʵ<><CAB5><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2> <20><>ע<EFBFBD>е<EFBFBD><D0B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
CInsertDataList m_listInsertData_Block; //<2F><><EFBFBD>в<EFBFBD><D0B2><EFBFBD><EFBFBD><EFBFBD>Ϣ
//<2F><>m_listCurveInfo/m_listArcCircle/m_listEllispse<73><65><EFBFBD>ҳ<EFBFBD>ֽ<EFBFBD><D6BD><EFBFBD><EFBFBD>
CPatternBlockList m_listPatternBlock; //ֽ<><D6BD><EFBFBD><EFBFBD>
public:
CAuBlockInfor(void);
CAuBlockInfor(CAuBlockInfor& a);
~CAuBlockInfor(void);
void operator=(CAuBlockInfor& a);
void Initial(void);
//λ<><CEBB>ƫ<EFBFBD><C6AB>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//dOffsetX/dOffsetY ƫ<><C6AB><EFBFBD><EFBFBD>
//dSin/dCos <20><>ת<EFBFBD>Ƕȣ<C7B6> <20><>ת<EFBFBD><D7AA>ΪCPoint(0,0), ˮƽΪ<C6BD><CEAA><EFBFBD><EFBFBD>
//dScaleX/dScaleY <20>Ŵ<EFBFBD><C5B4><EFBFBD>С 20220408 XQ
//˵<><CBB5><EFBFBD><EFBFBD>
// ƫ<><C6AB>-><3E><>ת-><3E>Ŵ<EFBFBD><C5B4><EFBFBD>С
void SetRotateOffset(double dOffsetX, double dOffsetY, double dSin, double dCos, double dScaleX, double dScaleY);
//<2F>жϸÿ<CFB8><C3BF>Ƿ<EFBFBD>Ϊ<EFBFBD>տ<EFBFBD>
//<2F><><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5>
// =true <20>ǣ<EFBFBD>=false<73><65><EFBFBD><EFBFBD>
//˵<><CBB5><EFBFBD><EFBFBD>
// <20>տ<EFBFBD><D5BF><EFBFBD>û<EFBFBD><C3BB><EFBFBD>κ<EFBFBD><CEBA><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>
BOOL IsEmptyBlock();
//<2F>õ<EFBFBD>ֽ<EFBFBD><D6BD><EFBFBD><EFBFBD><E9A3AC>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>m_listPatternBlock<63><6B>
void GetPatternBlock();
private:
//<2F>õ<EFBFBD>ֽ<EFBFBD><D6BD><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
// listAllCurveInfor <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// listTextData <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// listPatternBlock ֽ<><D6BD><EFBFBD><EFBFBD>
void GetPatternBlock(CCurveNotchInforList &listAllCurveInfor, CTextDataList &listTextData, CPointDataList &listPointInfo, CPatternBlockList &listPatternBlock);
};
class CAuBlockInfoList : public CList<CAuBlockInfor,CAuBlockInfor&>
{
public:
CAuBlockInfoList& operator=(CAuBlockInfoList& rhs); // <20><>ֵ
//<2F><>ȡָ<C8A1><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD>ϵ<EFBFBD><CFB5><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
// iIndex <20><><EFBFBD><EFBFBD>ֵ,<2C><>0<EFBFBD><30>ʼ,<2C><><EFBFBD><EFBFBD>Խ<EFBFBD><D4BD>
//<2F><><EFBFBD><EFBFBD>ֵ:
CAuBlockInfor& operator[](int iIndex);
//<2F><><EFBFBD>ݸ<EFBFBD><DDB8><EFBFBD><EFBFBD>Ŀ<EFBFBD><C4BF><EFBFBD><EFBFBD>ҳ<EFBFBD><D2B3><EFBFBD>Ӧ<EFBFBD>Ŀ<EFBFBD>
//[<5B><><EFBFBD><EFBFBD>] strBlockName <20><><EFBFBD><EFBFBD>
//[<5B><><EFBFBD><EFBFBD>] BlockInfor <20>ҵ<EFBFBD><D2B5>Ŀ<EFBFBD>
//<2F><><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5>
// <20>ҵ<EFBFBD><D2B5><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD>ã<EFBFBD> û<><C3BB><EFBFBD>ҵ<EFBFBD><D2B5><EFBFBD><EFBFBD><EFBFBD>NULL
POSITION FindBlockName(CString strBlockName, CAuBlockInfor &BlockInfor);
//<2F><>עλ<D7A2><CEBB>ƫ<EFBFBD><C6AB>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//dOffsetX/dOffsetY ƫ<><C6AB><EFBFBD><EFBFBD>
//dSin/dCos <20><>ת<EFBFBD>Ƕȣ<C7B6> <20><>ת<EFBFBD><D7AA>ΪCPoint(0,0), ˮƽΪ<C6BD><CEAA><EFBFBD><EFBFBD>
//dScaleX/dScaleY <20>Ŵ<EFBFBD><C5B4><EFBFBD>С 20220408 XQ
//˵<><CBB5><EFBFBD><EFBFBD>
// ƫ<><C6AB>-><3E><>ת-><3E>Ŵ<EFBFBD><C5B4><EFBFBD>С
void SetRotateOffset(double dOffsetX, double dOffsetY, double dSin, double dCos, double dScaleX, double dScaleY);
//ɾ<><C9BE><EFBFBD>տ飨û<E9A3A8><C3BB><EFBFBD>κ<EFBFBD><CEBA><EFBFBD><EFBFBD>ݵĿ飩
void DeleteEmptyBlock();
//<2F>õ<EFBFBD>ֽ<EFBFBD><D6BD><EFBFBD><EFBFBD>
void GetPatternBlock();
};
//////////////////////////////////////////////////////////////////////////
//TABLE ->LTYPE
class CLTypeInfor : public CObject
{
public:
//˵<><CBB5><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>AutoCAD<41>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ͷ<EFBFBD><CDB6><EFBFBD>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD><EFBFBD>ű<EFBFBD>ʾ<EFBFBD>ģ<EFBFBD><C4A3><EFBFBD><EFBFBD>ʹ<EFB6BC><CAB9><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD>
CString m_strLTypeName; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
CString m_strDescribe; //<2F><><EFBFBD><EFBFBD>
public:
CLTypeInfor(void);
CLTypeInfor(CLTypeInfor& a);
~CLTypeInfor(void);
void operator=(CLTypeInfor& a);
void Initial(void);
};
class CLTypeInforList : public CList<CLTypeInfor,CLTypeInfor&>
{
public:
CLTypeInforList& operator=(CLTypeInforList& rhs); // <20><>ֵ
//<2F><>ȡָ<C8A1><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD>ϵ<EFBFBD><CFB5><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
// iIndex <20><><EFBFBD><EFBFBD>ֵ,<2C><>0<EFBFBD><30>ʼ,<2C><><EFBFBD><EFBFBD>Խ<EFBFBD><D4BD>
//<2F><><EFBFBD><EFBFBD>ֵ:
CLTypeInfor& operator[](int iIndex);
};
//////////////////////////////////////////////////////////////////////////
//TABLE ->LAYER
class CLayerInfor : public CObject
{
public:
//˵<><CBB5><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>AutoCAD<41>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ͷ<EFBFBD><CDB6><EFBFBD>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD><EFBFBD>ű<EFBFBD>ʾ<EFBFBD>ģ<EFBFBD><C4A3><EFBFBD><EFBFBD>ʹ<EFB6BC><CAB9><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD>
CString m_strLayerName; //ͼ<><CDBC><EFBFBD><EFBFBD>
int m_iStandard; //<2F><>׼<EFBFBD><D7BC>־ֵ
/*
m_iStandard <EFBFBD><EFBFBD>׼<EFBFBD><EFBFBD>־ֵ(λ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ)<EFBFBD><EFBFBD>
1 = <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼ<EFBFBD><EFBFBD><EFBFBD>
2 = <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӿ<EFBFBD><EFBFBD><EFBFBD>ȱʡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼ<EFBFBD><EFBFBD>
4 = <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼ<EFBFBD><EFBFBD>
*/
CString m_strColor; //<2F><>ɫ<EFBFBD><C9AB>
CString m_strLineType; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
public:
CLayerInfor(void);
CLayerInfor(CLayerInfor& a);
~CLayerInfor(void);
void operator=(CLayerInfor& a);
void Initial(void);
};
class CLayerInforList : public CList<CLayerInfor,CLayerInfor&>
{
public:
CLayerInforList& operator=(CLayerInforList& rhs); // <20><>ֵ
//<2F><>ȡָ<C8A1><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD>ϵ<EFBFBD><CFB5><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
// iIndex <20><><EFBFBD><EFBFBD>ֵ,<2C><>0<EFBFBD><30>ʼ,<2C><><EFBFBD><EFBFBD>Խ<EFBFBD><D4BD>
//<2F><><EFBFBD><EFBFBD>ֵ:
CLayerInfor& operator[](int iIndex);
//<2F><><EFBFBD><EFBFBD><EFBFBD>IJ<EFBFBD><C4B2><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6>ɫ
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// strLayerName <20><><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5>
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6>ɫ<EFBFBD><C9AB>û<EFBFBD><C3BB>Ϊ<EFBFBD><CEAA>
CString FindColor(CString strLayerName);
};
//////////////////////////////////////////////////////////////////////////
class CAuTableInfor : public CObject
{
public:
//˵<><CBB5><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>AutoCAD<41>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ͷ<EFBFBD><CDB6><EFBFBD>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD><EFBFBD>ű<EFBFBD>ʾ<EFBFBD>ģ<EFBFBD><C4A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFB6BC><CAB9><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD>
CLTypeInforList m_listLType; //<2F><>ʶ<EFBFBD><CAB6> LTYPE <20><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
CLayerInforList m_listLayer; //<2F><>ʶ<EFBFBD><CAB6> LAYER <20><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2> Entities<65><73><EFBFBD>԰<EFBFBD><D4B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD>б<EFBFBD><D0B1><EFBFBD>û<EFBFBD>е<EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD>Ϣ
public:
CAuTableInfor(void);
CAuTableInfor(CAuTableInfor& a);
~CAuTableInfor(void);
void operator=(CAuTableInfor& a);
void Initial(void);
};
//////////////////////////////////////////////////////////////////////////
class CAutoCADFileInfo : public CObject
{
public:
CAuBlockInfoList m_listBlockInfor;
CAuBlockInfor m_EntitiesInfor;
//<2F><><EFBFBD><EFBFBD>Ϣ
CAuTableInfor m_TableInfor; //<2F><><EFBFBD><EFBFBD>Ϣ TABLES
public:
CAutoCADFileInfo(void);
CAutoCADFileInfo(CAutoCADFileInfo& a);
~CAutoCADFileInfo(void);
void operator=(CAutoCADFileInfo& a);
void Initial(void);
//<2F>õ<EFBFBD>ֽ<EFBFBD><D6BD><EFBFBD><EFBFBD>
//m_listBlockInfor/m_EntitiesInfor<6F><72><EFBFBD><EFBFBD>Ϣת<CFA2><D7AA>CPatternBlockList
void GetPatternBlock();
//<2F><>ȥ<EFBFBD><C8A5><EFBFBD>ز<EFBFBD><D8B2>õ<EFBFBD>BLOCK
void RemoveUnUseBlock();
};
/*
˵<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
1.<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>в<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֻ<EFBFBD>ǽ<EFBFBD><EFBFBD>ļ<EFBFBD><EFBFBD>е<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԭ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
*/
class CReadAutoCAD: public CObject
{
public:
CAutoCADFileInfo m_FileInfo; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD>
private:
FILE *m_pDXFFile; //<2F>ļ<EFBFBD>ָ<EFBFBD><D6B8>
BOOL m_bReadWindowText; //=ture <20><>Window/Dos<6F>ı<EFBFBD><C4B1>ļ<EFBFBD><C4BC><EFBFBD>=false <20><>Unix/Linux<75><78><EFBFBD>ı<EFBFBD><C4B1>ļ<EFBFBD>
CString m_strValue1, m_strValue2; //<2F><><EFBFBD>ڶ<EFBFBD><DAB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
BOOL m_bPattern; //=trueҪ<65><D2AA><EFBFBD><EFBFBD>ֽ<EFBFBD><D6BD><EFBFBD><EFBFBD>=false <20><EFBFBD><E1B9B9>
BOOL m_bReadSolid; //=true<75><65><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʶ<EFBFBD>ߣ<EFBFBD>=false <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
public:
CReadAutoCAD(void);
~CReadAutoCAD(void);
//<2F><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// strFilePath <20>ļ<EFBFBD>·<EFBFBD><C2B7>
// bPattern = true <20><><EFBFBD><EFBFBD>ֽ<EFBFBD><D6BD><EFBFBD><EFBFBD>=false <20><EFBFBD><E1B9B9>
// bReadSolid = true<75><65><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʶ<EFBFBD>ߣ<EFBFBD>=false<73><65><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 20210902 XQ
BOOL ReadAutoCADFile(CString strFilePath, BOOL bPattern, BOOL bReadSolid);
private:
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//[<5B><><EFBFBD><EFBFBD>] fFile <20>ļ<EFBFBD>
//[<5B><><EFBFBD><EFBFBD>] strString1/strString2 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
void ReadGroupString(FILE *fFile, CString &strString1, CString &strString2);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5>
// =true <20><><EFBFBD><EFBFBD><EFBFBD>ݳɹ<DDB3><C9B9><EFBFBD>=false <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD><CAA7>
//˵<><CBB5><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݴ<EFBFBD><DDB4><EFBFBD><EFBFBD><EFBFBD>m_FileInfo
BOOL ReadFileData();
//<2F><>TABLE<4C><45>Ϣ
// TableInfor<6F><72><EFBFBD><EFBFBD><EFBFBD><EFBFBD>TABLE<4C><45>Ϣ
// <20><><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5>
// =true <20><><EFBFBD><EFBFBD><EFBFBD>ݳɹ<DDB3><C9B9><EFBFBD>=false <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD><CAA7>
//˵<><CBB5><EFBFBD><EFBFBD>
// <20>ں<EFBFBD><DABA><EFBFBD><EFBFBD>в<EFBFBD><D0B2>ܶ<EFBFBD>TableInfor<6F><72>ʼ<EFBFBD><CABC>
BOOL ReadTableData(CAuTableInfor &TableInfor);
//<2F><><EFBFBD><EFBFBD>ʶ<EFBFBD><CAB6>LAYER
BOOL ReadLayerData(CLayerInfor &LayerInfor);
//<2F><><EFBFBD><EFBFBD>ʶ<EFBFBD><CAB6>LTYPE
BOOL ReadLTypeData(CLTypeInfor &LTypeInfor);
//<2F><>BLOCK<43><4B>Ϣ
// BlockInfor<6F><72><EFBFBD><EFBFBD><EFBFBD><EFBFBD>BLOCK<43><4B>Ϣ
// bReadBlock =true <20><>BLOCK<43><4B>=false<73><65>ENTITIES
// <20><><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5>
// =true <20><><EFBFBD><EFBFBD><EFBFBD>ݳɹ<DDB3><C9B9><EFBFBD>=false <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD><CAA7>
BOOL ReadBlockData(CAuBlockInfor &BlockInfor, BOOL bReadBlock);
//<2F><><EFBFBD><EFBFBD>ʶ<EFBFBD><CAB6>ARC<52><43>Ϣ
BOOL ReadArcData(CCurveNotchInfor &ArcCircleData);
//<2F><><EFBFBD><EFBFBD>ʶ<EFBFBD><CAB6>CIRCLE<4C><45>Ϣ
BOOL ReadCircleData(CCurveNotchInfor &ArcCircleData);
//<2F><><EFBFBD><EFBFBD>ʶ<EFBFBD><CAB6>ELLIPSE<53><45>Ϣ
BOOL ReadEllipseData(CCurveNotchInfor &EllipseData);
//<2F><><EFBFBD><EFBFBD>ʶ<EFBFBD><CAB6>LINE<4E><45>Ϣ
BOOL ReadLineData(CCurveNotchInfor &CurveInfor);
//<2F><><EFBFBD><EFBFBD>ʶ<EFBFBD><CAB6>MLINE<4E><45>Ϣ
BOOL ReadMLineData(CCurveNotchInfor &CurveInfor);
//<2F><><EFBFBD><EFBFBD>ʶ<EFBFBD><CAB6>POLYLINE<4E><45>Ϣ
BOOL ReadPolylineData(CCurveNotchInfor &CurveInfor);
//<2F><><EFBFBD><EFBFBD>ʶ<EFBFBD><CAB6>LWPOLYLINE<4E><45>Ϣ
BOOL ReadLWPolylineData(CCurveNotchInfor &CurveInfor);
//<2F><><EFBFBD><EFBFBD>ʶ<EFBFBD><CAB6>SPLINE<4E><45>Ϣ
BOOL ReadSPLineData(CCurveNotchInfor &CurveInfor);
//<2F><><EFBFBD><EFBFBD>ʶ<EFBFBD><CAB6>TEXT<58><54>Ϣ
BOOL ReadTEXTData(CTextData &TextData);
//<2F><><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD>Ƿ<EFBFBD>Ϊֽ<CEAA><D6BD><EFBFBD><EFBFBD><EFBFBD>ƻ<EFBFBD><C6BB>ߺ<EFBFBD><DFBA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//[<5B><><EFBFBD><EFBFBD>] strRef <20>ο<EFBFBD><CEBF>ַ<EFBFBD><D6B7><EFBFBD>
//[<5B><><EFBFBD><EFBFBD>] strName <20><><EFBFBD><EFBFBD> <20><>ֵֻ<D6B5><D6BB><EFBFBD>ڷ<EFBFBD><DAB7><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><30><CAB1>Ч
//<2F><><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5>
// =0 <20><><EFBFBD><EFBFBD><EFBFBD>κ<EFBFBD><CEBA><EFBFBD><EFBFBD><EFBFBD>
// =1 ֽ<><D6BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// =2 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// =3 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// =4 <20><><EFBFBD>Ϸ<EFBFBD><CFB7><EFBFBD>
int NameSizeInfor(CString strRef, CString &strName);
//<2F><><EFBFBD><EFBFBD>ʶ<EFBFBD><CAB6>MTEXT<58><54>Ϣ
BOOL ReadMTEXTData(CTextData &TextData);
//<2F><><EFBFBD><EFBFBD>ʶ<EFBFBD><CAB6>POINT<4E><54>Ϣ
BOOL ReadPointData(CPointData &PointData);
//<2F><><EFBFBD><EFBFBD>ʶ<EFBFBD><CAB6>DIMENSION<4F><4E>Ϣ
BOOL ReadDimensionData(CDimension &Dimension);
//<2F><><EFBFBD><EFBFBD>ʶ<EFBFBD><CAB6>SOLID<49><44>Ϣ
BOOL ReadSolidData(CSolidInfor &SolidInfor);
//<2F><><EFBFBD><EFBFBD>ʶ<EFBFBD><CAB6>INSERT<52><54>Ϣ
BOOL ReadInsertData(CInsertData &InsertData);
//<2F><><EFBFBD><EFBFBD>SPline<6E><65><EFBFBD><EFBFBD>
// pBlockInfor <20><>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD>SPline<6E>Ŀ<EFBFBD>
void CalcuateSPlineCurve(CAuBlockInfor *pBlockInfor);
};
#endif