219 lines
5.3 KiB
C++
219 lines
5.3 KiB
C++
#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 |