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

197 lines
5.1 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 (READDXFFILE_H)
#define READDXFFILE_H
#include "PDSMath/StdAfx.h"
#include <iostream>
//#include <afxtempl.h>
#include "ReadAutoCAD.h"
#include "ReadASTM.h"
#include "ReadTIIP.h"
//////////////////////////////////////////////////////////////////////////
//款式信息
class CStyleInfo : public CObject
{
public:
CString m_strStyleName;
CString m_strBaseSizeName;
CList<CString, CString> m_listAllSize;
int m_iUnit; //0 mm;=1 Inch
CString m_strAuthor;
CString m_strVersion; //20180127 版本号
CStyleInfo(void);
CStyleInfo(CStyleInfo& a);
~CStyleInfo(void);
void operator=(CStyleInfo& a);
void Initial(void);
};
class CReadDxfData : public CObject
{
public:
int m_iDPMM;
//款式信息,款式号型信息
CStyleInfo m_StyleInfo;
BOOL m_bPattern; //=true 纸样;=false结构线
//结构线信息
CCurveNotchInforList m_listCurveOfFile; //文件中所有点线信息
CTextDataList m_listTextOfFile; //文件中所有字符信息
CLayerInforList m_listLayer;
//纸样信息
CPatternBlockList m_listPattern; //纸样
//放码量 该变量只有读入rul文件有用
int m_iGradeCount; //放码量个数
int m_iSizeCount; //号型个数
//m_iSizeCount, m_iGradeCount只对m_RulData起作用
CPointData **m_pRulData; //m_RulData[iSizeIndex][iGradeIndex]
public:
CReadDxfData(void);
CReadDxfData(CReadDxfData& a);
~CReadDxfData(void);
void operator=(CReadDxfData& a);
void Initial(void);
CRect GetRect();
//计算实际点链
void CalcuateActualPoint(int iDPMM);
//20200219 XQ 计算给定纸样的实际点链
//[输入][输出] pPatternBlock 纸样
void CalcuateActualPoint(int iDPMM, CPatternBlock *pPatternBlock);
//放缩
//输入参数:
//dScale 放大缩小比例
//说明:
// 不需要偏移,放码量本身是相对量
void SetScale(double dScale);
//颜色
//输入参数:
// strLayer 颜色所有在层
//返回值:
//颜色
COLORREF GetColor(CString strLayer);
//查找颜色表(Auto CAD 根据索引对应颜色)
//输入参数:
// strColor 颜色索引
COLORREF FinColorTable(CString strColor);
//得到线形
//输入参数:
// iFileType = 0 ASTM/AAMA;=1 TIIP;=2 AutoCAD
// strCurveViewType 文件读入的线形
//返回值:
// 系统线形PS_SOLID...
int GetCurveType(int iFileType, CString strCurveViewType);
private:
void DeleteElta();
void CopyData(CReadDxfData &a);
//TIIP文件线形转换
//输入参数:
// iValue 文件中的值
//返回值:
// 系统的线类型
int CurveType_TIIP(int iValue);
};
//读入文件
//输入参数:
// strFilePath文件路径
// bPattern =true读纸样false 结构线
// bReadSolid = true读入填充标识线=false不读入 20210902 XQ
//输出参数:
// AutoCADDxfData 读入数据
//返回值:
// =true 读入正确;=false读入错误
BOOL ReadAutoCADFile(CString strFilePath, BOOL bPattern, BOOL bReadSolid, CReadDxfData &AutoCADDxfData);
//将读入的数据转成输出的数据
//[输入] EntitiesInfor 读入数据
//[输入] bPattern =true读纸样false 结构线
//[输出] AutoCADDxfData 输出数据
void GetAutoCADDxfData(CAutoCADFileInfo FileInfo, BOOL bPattern, CReadDxfData &AutoCADDxfData);
//得到输出数据
//[输入] BlockInfor 块信息
//[输入] listBlockInfor 所有块信息
//[输入][输出] listCurveOfFile 线条信息
//[输入][输出] listTextOfFile 文本信息
//[输入] dOffsetX/dOffsetY插入位置
//[输入] dSin, dCos 旋转角度
//[输入] dScaleX/dScaleY 放大缩小 20220408 XQ
void GetAutoCADDxfData(CAuBlockInfor BlockInfor, CAuBlockInfoList &listBlockInfor, CCurveNotchInforList &listCurveOfFile, CTextDataList &listTextOfFile, double dOffsetX, double dOffsetY, double dSin, double dCos, double dScaleX, double dScaleY);
//将读入的数据转成输出的数据
//输入参数:
// strFilePath 文件路径
// bPattern =true 纸样, false 结构线, 结构线不用读rul
// bOnlyReadBaseSize =true 仅读基码, 读纸样有效
//输出参数:
//ASTMDxfData 输出数据
//返回值:
// = 0 读入成功
// = 1 文件打不开
// = 2 可能是AutoCAD文件
// = 3 可能TIIP文件
int ReadASTMFile(CString strFilePath, BOOL bPattern, BOOL bOnlyReadBaseSize, CReadDxfData &ASTMDxfData);
//将读入的数据转成输出的数据
//输入参数:
// FileInfo 文件信息
// bPattern =true 纸样, false 结构线, 结构线不用读rul
// bOnlyReadBaseSize =true 仅读基码, 读纸样有效
//输出参数:
//ASTMDxfData 输出数据
void GetASTMData(CASTMFileInfor FileInfo, BOOL bPattern, BOOL bOnlyReadBaseSize, CReadDxfData &ASTMDxfData);
//将CAMBlockInfor转CPatternBlock类型
BOOL TrantsAMPatternBlock(CString strAuthor, CAMBlockInfor BlockInfor, CPatternBlock &PatternBlock);
//将读入的数据转成输出的数据
//输入参数:
// strFilePath 文件路径
// bPattern =true 纸样, false 结构线, 结构线不用读rul
// bOnlyReadBaseSize =true 仅读基码, 读纸样有效
//输出参数:
//AutoCADDxfData 输出数据
//返回值:
// = 0 读入成功
// = 1 文件打不开
// = 2 可能是AutoCAD文件
// = 3 可能ASTM/AAMA文件
int ReadTIIPFile(CString strFilePath, BOOL bPattern, BOOL bOnlyReadBaseSize, CReadDxfData &AutoCADDxfData);
//将读入的数据转成输出的数据
//输入参数:
// FileInfo 文件信息
// bPattern =true 纸样, false 结构线, 结构线不用读rul
// bOnlyReadBaseSize =true 仅读基码, 读纸样有效
//输出参数:
//AutoCADDxfData 输出数据
void GetTIIPData(CTIIPFileInfor FileInfo, BOOL bPattern, BOOL bOnlyReadBaseSize, CReadDxfData &AutoCADDxfData);
//将CTPBlockInfor转CPatternBlock类型
BOOL TrantsTPPatternBlock(CTPBlockInfor BlockInfor, CPatternBlock &PatternBlock);
#endif