#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 &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