PlotterHMI/datafile/dxf/dxflib/WriteAutoCAD.h
huahaiyan 9f74511e69 20240315
1、增加数据分割功能(完成)
2、更换dxf库(进行中)
2024-03-15 16:49:50 +08:00

170 lines
3.3 KiB
C++
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#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