197 lines
5.1 KiB
C++
197 lines
5.1 KiB
C++
#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
|