/************************************************************************************************** 版本所有(C), 2020-2022, 北京普达迪泰 *************************************************************************************************** 文 件 名: StaticData.h 功能描述: 静态数据集合 版 本 号: 1.00初版 作 者: HYF 生成日期; 2021-12-20 最近修改: 函数列表: 修改历史: 1.日 期 :2021-12-20 作 者 : HYF 修改内容 : 创建文件 **************************************************************************************************/ #pragma once #include "pch.h" #include #include class EquipDataAngle; class DictManager; class StaticData : public CObject { public: StaticData(DWORD iTaskId, LPCTSTR szEquipTypeCode, LPCTSTR szEquipCode); virtual ~StaticData(); private: // 字典管理 DictManager *m_pDictManager; // 任务ID DWORD m_iTaskId; // 设备型号 CString m_szEquipTypeCode; // 设备编码 CString m_szEquipCode; // 静态数据类别 CDataList m_DataList; // 平面列表 CPlaneList m_PlaneList; // 圆列表 CCircleList m_CircleList; // 线列表 CLineList m_LineList; // 点列表 CPointList m_PointList; // 圆柱列表 CCylinderList m_CylinderList; // 推力线偏角列表 CAngleList m_AngleList; // 点残差列表 CPointRelatedList m_PointRelatedList; public: // 设备型号 void SetEquipTypeCode(LPCTSTR szEquipTypeCode) { m_szEquipTypeCode = szEquipTypeCode; } CString GetEquipPlace() const { return m_szEquipTypeCode; } // 设备编号 void SetEquipCode(LPCTSTR szEquipCode) { m_szEquipCode = szEquipCode; } CString GetEquipCode() const { return m_szEquipCode; } public: // 从IDPMS文件加载数据 BOOL LoadDataFromFile(LPCTSTR szFile); // 新增 void AddEquipItemData(int iType); void AddEquipSubItemData(int iType, void *pData); // 解析点 BOOL ParsePoint(CStdioFile *pfile); // 解析平面 BOOL ParsePlane(CStdioFile *pfile, CString &szLine); // 解析圆 BOOL ParseCircle(CStdioFile *pfile, CString &szLine); // 解析直线 BOOL ParseLine(CStdioFile *pfile, CString &szLine); // 解析圆柱 BOOL ParseCylinder(CStdioFile *pfile, CString &szLine); // 解析点残差 BOOL ParsePointRelated(CStdioFile *pFile, int iType); BOOL ParsePlanePointRelated(CStdioFile *pFile); BOOL ParseCirclePointRelated(CStdioFile *pFile); BOOL ParseLinePointRelated(CStdioFile *pFile); BOOL ParseCylinderPointRelated(CStdioFile *pFile); // 计算平面度 void CalcPointFlatness(); // void CalcCircleRoundness(); // 计算推力线偏角 void GenerateAngle(); void GenerateAngleText(); void GenerateDoublePoint(); void HandleAngle(LPCTSTR szCylinderCode, LPCTSTR szPointCode); void HandleAngleDoublePoint(LPCTSTR szPointCodeStart, LPCTSTR szPointCodeEnd); void CalcAngle(const DOUBLE x1, const DOUBLE y1, const DOUBLE z1, const DOUBLE x2, const DOUBLE y2, const DOUBLE z2); void CalcAngle(const CString count,const DOUBLE x1, const DOUBLE y1, const DOUBLE z1, const DOUBLE x2, const DOUBLE y2, const DOUBLE z2); // 新增推力线偏角 void AddAngle(EquipDataAngle *pNewAngle); // 基于编号查询 EquipDataPoint* SearchPointByCode(LPCTSTR szCode); BOOL IsEquipDataExist(int iType); // 调试打印 void PrintData(); void PrintEquipData(CStdioFile *pFile); void PrintPoint(CStdioFile *pFile); void PrintPlane(CStdioFile *pFile); void PrintCircle(CStdioFile *pFile); void PrintLine(CStdioFile *pFile); void PrintCylinder(CStdioFile *pFile); void PrintAngle(CStdioFile *pFile); void PrintPointRelated(CStdioFile *pFile); // 清除 void Clear(); // BOOL Validate(CString &szMsg); // 保存到数据库 BOOL SaveToDB(); int SaveEquipDataToDB(); int SavePlaneToDB(); int SaveCircleToDB(); int SaveLineToDB(); int SavePointToDB(); int SaveCylinderToDB(); int SaveAngleToDB(); int SavePointRelatedToDB(); // 输出配置文件 int OutputConfig(); int OutputDataToFile(const CString &szFileName, const CString &szPoints); };