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

219 lines
5.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 (WRITEASTM_H)
#define WRITEASTM_H
#include "WriteDxfFile.h"
class CWriteASTM : public CObject
{
private:
CWriteDxfData m_Data;
CString m_strFilePath; //文件路径(全)
//int m_iFileType; // =0 只输出基码;=1 输出所有码带rul=2 输出所有码所有码都在dxf不带rul
int m_iOutputType; // =0 ASTM; =1 AAMA
//BOOL m_bSeamToAssistant; //=true 缝份线按辅助线输出;=false 缝份线按缝份输出
FILE *m_pDXFFile; //文件指针
CPoint m_ptPatternOffset; //纸样偏移
double m_dScale;
float m_fTextHeight, m_fTextDeltaY; //字体高度,文字间隔
public:
CWriteASTM();
~CWriteASTM();
//输出AAMA、ASTM文件
//输入参数:
// strPath 保存文件路径(全路径)
// OutputType =0 ASTM; =1 AAMA
// DxfData 需要输出的数据
//返回值:
// =true 输出正确;=false路径无法保存
BOOL WriteFile(CString strPath, int iOutputType, CWriteDxfData &DxfData);
private:
void Initial();
//纸样坐标转换成设备坐标
//输入参数:
// ptPoint 纸样坐标
//输出参数:
// fx, fy 对应的设备坐标的X和Y值
void PttnToDP(CPoint ptPoint, float &fx, float &fy);
//输出所有纸样块
//说明
//文件m_pDXFFile 数据m_Data
void WriteBlockS();
//输出纸样块
// 输入参数:
// pPatternData 输出块信息
// bBaseSize 基码
//说明
//文件m_pDXFFile 数据m_Data
void WriteBlock(CPatternData *pPatternData, BOOL bBaseSize);
//输出纸样基本信息
//输入参数:
// pPatternData 纸样信息
// bBaseSize 基码
void WritePatternInfo(CPatternData *pPatternData, BOOL bBaseSize);
//输出边线
//输入参数:
// listBorder 边线链
// bBorder =true 边线;=false 缝份
// listNotch 剪口, 在该边线中输出了的剪口从链表中删除
void WriteBorder(CCurveIDataList &listBorder, BOOL bBorder, CNotchIDataList &listNotch);
//输出辅助线
//输入参数:
// listAssistantCurve 辅助线链
void WriteAssistantCurve(CCurveIDataList &listAssistantCurve);
//输出圆弧
//输入数据:
// pFile 写入的文件指针
// CurveData 圆弧数据
// iLayer 层
//返回值:
// =true 该数据输出;=false 该数据没有输出
BOOL WriteArc(FILE *pFile,CCurveIData CurveData, int iLayer);
//输出圆
//输入数据:
// pFile 写入的文件指针
// CurveData 圆数据
// iLayer 层
//返回值:
// =true 该数据输出;=false 该数据没有输出
BOOL WriteCircle(FILE *pFile,CCurveIData CurveData, int iLayer);
//输出钻孔
//输入参数:
// listDrill 钻孔链
void WriteDrill(CDrillIDataList &listDrill);
//20190527 XQ 输出文本文字
//输入参数:
// listText文本文字链
void WriteText(CTextIDataList &listText);
//输出布纹线
//输入参数:
// GrainLine 布纹线
void WriteGrainLine(CCurveIData GrainLine);
//输出放码线
//输入参数:
// GrainLine 布纹线
//说明:
//放码线按照布纹线中点,输出水平线
void WriteGradeLine(CCurveIData GrainLine);
//输出对称轴
//输入参数:
// SymmetryLine 对称轴
void WriteSymmetry(CCurveIData SymmetryLine);
//写POLYLINE
// pFile 写入的文件指针
// iLayer 所在的层
// listPoint 多段线点链(纸样坐标)
// bClose =true 折线是封闭的 =false 折线是开口的
void WritePolyLine(FILE *pFile,int iLayer, CPointIDataList &listPointData, BOOL bClose);
//写POLYLINE
// pFile 写入的文件指针
// iLayer 所在的层
// listPoint 多段线点链(纸样坐标)
// bClose =true 折线是封闭的 =false 折线是开口的
void WritePolyLine(FILE *pFile,int iLayer, CList<CPoint, CPoint> &listPoint, BOOL bClose);
//写LINE
// pFile 写入的文件指针
// iLayer 所在的层
// ptPointS, ptPointE 直线的两点(纸样坐标)
void WriteLine(FILE *pFile,int iLayer, CPointIData PointIDataS, CPointIData PointIDataE);
//写多线段顶点
// pFile 写入的文件指针
// iLayer 所在的层
// ptPoint 点坐标(纸样坐标)
void WriteVertex(FILE *pFile, int iLayer, CPoint ptPoint);
//写点
// pFile 写入的文件指针
// iLayer 所在的层
// ptPoint 点坐标
void WritePoint(FILE *pFile, int iLayer, CPoint ptPoint);
//写剪口
// pFile 写入的文件指针
// NotchData 剪口数据
//说明:
// 角度是与水平线的夹角
void WriteNotch(FILE *pFile, CNotchIData NotchData);
//写放码标识符文本
//输入参数:
// pFile 写入的文件指针
// iLayer 所在的层
// ptGrade 放码点
// iGradeIndex 放码索引
void WriteGradeText(FILE *pFile, int iLayer, CPoint ptGrade, int iGradeIndex);
//写字符串文本
//输入参数:
// pFile 写入的文件指针
// iLayer 所在的层
// TextData 文本
void WriteText(FILE *pFile, int iLayer, CTextIData TextData);
//输出Entities
//说明
//文件m_pDXFFile 数据m_Data
void WrtieEntities();
//写插入信息
//输入参数:
// fFile 写入的文件指针
// fx, fy 插入坐标(显示器坐标)
// strBlockName 块名
// dAngle 角度
void WriteInsert(FILE *fFile, float fx, float fy, CString strBlockName, double dAngle);
//写字符串文本
//输入参数:
// fFile 写入的文件指针
// iLayer 所在的层
// fx, fy 字符串坐标(显示器坐标)
// strString 字符串信息
void WriteEntitiesText(FILE *fFile, int iLayer, float fx, float fy, CString strString);
void WriteRule();
void WriteRule_Empty();
//输出rul头部分
//输入参数:
// pRulFile 文件
// StyleInfo 款式信息
// strFileName rul文件名称
void WriteRuleHead(FILE *pRulFile, CWriteStyleInfo StyleInfo, CString strFileName);
//输出rul内容部分
//输入参数:
// pRulFile 文件
// pRulData 放码数据
// iSizeCount 号型总数
// iGradeCount 放码点总数
void WriteRule(FILE *pRulFile, CPoint **pRulData, int iSizeCount, int iGradeCount);
};
#endif