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++
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; |