#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