You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

83 lines
2.0 KiB
C++

#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<CString> &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<Dbxy> &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;