#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); void SetDxfFileName(CString name) { m_dxfFileName = name; }; 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;//显示计算的圆弧半径(用来控制只显示一次) public: CString m_dxfFileName; private: CString m_LINE; CString m_CIRCLE; CString m_POLYLINE; CString m_ARC; CString m_TEXT; CString m_MTEXT; CString m_DIMENSION; }; extern CDxfReadMgr *gDxfReadMgr;