170 lines
3.3 KiB
C++
170 lines
3.3 KiB
C++
#if !defined (WRITEAUTOCAD_H)
|
||
#define WRITEAUTOCAD_H
|
||
|
||
#include "WriteDxfFile.h"
|
||
|
||
class CWriteAutoCAD : public CObject
|
||
{
|
||
private:
|
||
double m_dScale;
|
||
|
||
CPoint m_ptPatternOffset; //纸样偏移
|
||
|
||
CWriteDxfData m_Data;
|
||
FILE *m_pDXFFile; //文件指针
|
||
int m_iHandleIndex; //句柄索引
|
||
BOOL m_bVer15; //=true输出R15 输出控制点有Spline;=false输出R12 输出实际点链
|
||
public:
|
||
CWriteAutoCAD();
|
||
~CWriteAutoCAD();
|
||
|
||
void Initial();
|
||
|
||
//写文件
|
||
//输入参数:
|
||
// strPath; 文件全路径
|
||
// Data 输出的数据
|
||
// bVer15 true输出R15 输出控制点有Spline;=false输出R12 输出实际点链
|
||
//返回值:
|
||
// =true 输出正确;=false路径无法保存
|
||
BOOL WriteFile(CString strPath, CWriteDxfData &DxfData, BOOL bVer15);
|
||
|
||
private:
|
||
|
||
//纸样坐标转换成设备坐标
|
||
//输入参数:
|
||
// ptPoint 纸样坐标
|
||
//输出参数:
|
||
// fx, fy 对应的设备坐标的X和Y值
|
||
void PttnToDP(CPoint ptPoint, float &fx, float &fy);
|
||
|
||
//得到句柄
|
||
//返回值:
|
||
// 句柄字符
|
||
//文件中所有的句柄都不能相同
|
||
CString GetHandle();
|
||
|
||
//输出HEADER
|
||
//说明
|
||
//文件m_pDXFFile
|
||
void WriteHEADER();
|
||
void WriteHEADER_12();
|
||
void WriteHEADER_15();
|
||
|
||
//输出TABLE
|
||
//说明
|
||
//文件m_pDXFFile
|
||
void WriteTABLES();
|
||
void WriteTABLES_12();
|
||
void WriteTABLES_15();
|
||
|
||
//输出BLOCKS
|
||
//说明
|
||
//文件m_pDXFFile, 数据m_Data
|
||
void WriteBLOCKS();
|
||
void WriteBLOCKS_15();
|
||
|
||
//输出纸样块
|
||
// 输入参数:
|
||
// PatternData 输出块信息
|
||
//说明
|
||
//文件m_pDXFFile, 数据m_Data
|
||
void WriteBLOCK(CPatternData &PatternData);
|
||
|
||
//输出Entities
|
||
//说明
|
||
//文件m_pDXFFile, 数据m_Data
|
||
void WriteENTITIES();
|
||
|
||
|
||
//输出曲线
|
||
//输入参数:
|
||
// iLayer 所属层
|
||
// listCurveOfFile 曲线,所有曲线都在给定层
|
||
void WriteCurve(int iLayer, CCurveIDataList &listCurveOfFile);
|
||
|
||
//输出圆弧
|
||
//输入参数:
|
||
// iLayer 所属层
|
||
// CurveData 曲线
|
||
void WriteArc(int iLayer, CCurveIData &CurveData);
|
||
|
||
//输出圆
|
||
//输入参数:
|
||
// iLayer 所属层
|
||
// CurveData 曲线
|
||
void WriteCircle(int iLayer, CCurveIData &CurveData);
|
||
|
||
//输出点
|
||
//输入参数:
|
||
// iLayer 所属层
|
||
// PointData 点
|
||
void WritePoint(int iLayer, CPoint ptPoint);
|
||
|
||
//输出直线
|
||
//输入参数:
|
||
// iLayer 所属层
|
||
// ptHead/ ptTail 直线两点
|
||
void WriteLine(int iLayer, CPoint ptHead, CPoint ptTail, COLORREF crColor);
|
||
|
||
|
||
//输出折线
|
||
//输入参数:
|
||
// iLayer 所属层
|
||
// CurveData 曲线
|
||
void WritePolyline(int iLayer, CCurveIData &CurveData);
|
||
|
||
//输出折线
|
||
//输入参数:
|
||
// iLayer 所属层
|
||
// CurveData 曲线
|
||
void WriteLWPolyline(int iLayer, CCurveIData &CurveData);
|
||
|
||
//输出曲线
|
||
//输入参数:
|
||
// iLayer 所属层
|
||
// CurveData 曲线
|
||
void WriteSpline(int iLayer, CCurveIData &CurveData);
|
||
|
||
//输出VERTEX
|
||
//输入参数:
|
||
// iLayer 所属层
|
||
// ptPoint 输出点
|
||
void WriteVertex(int iLayer, CPoint ptPoint);
|
||
|
||
//输出文本
|
||
//输入参数:
|
||
// iLayer 所属层
|
||
// listTextOfFile 文本,所有文本都在给定层
|
||
void WriteTexts(int iLayer, CTextIDataList &listTextOfFile);
|
||
|
||
//写文本
|
||
//输入参数:
|
||
// pfWrite 文件
|
||
// iLayer 所属层
|
||
// TextData 文本
|
||
void WriteText(int iLayer, CTextIData TextData);
|
||
|
||
//写文本
|
||
//输入参数:
|
||
// iLayer 所属层
|
||
// TextData 文本
|
||
void WriteMText(int iLayer, CTextIData TextData);
|
||
|
||
//写插入
|
||
//输入参数:
|
||
// strInsertName 插入名字
|
||
// PointData 插入文字
|
||
// dAngle 角度
|
||
void WriteInsert(CString strInsertName, CPoint PointData, double dAngle);
|
||
|
||
//转换成AutoCAD颜色索引
|
||
CString ConvertColor(COLORREF crColor);
|
||
|
||
|
||
void WriteOBJECT();
|
||
|
||
};
|
||
|
||
|
||
#endif |