COMPASSi/trunk/code/inc/DataManager/Infrastructure.Data/DataContainer/StructureCalculationData.h

62 lines
2.0 KiB
C
Raw Normal View History

2025-06-27 17:52:01 +08:00
#ifndef STRUCTURECALCULATIONDATA_H
#define STRUCTURECALCULATIONDATA_H
#include "../StructureCalculation/ScantlingCalculation.h"
#include "../StructureCalculation/StrengthCalculation.h"
#include <QMap>
#include "Serialization.h"
#include "DataBlock.h"
// 该类是结构计算的数据容器类继承自Serialization
// 用于存储结构计算相关的数据包括CXS中结构计算数据块以及XSD表的内存映射
class StructureCalculationData : public Serialization
{
public:
StructureCalculationData()
{
}
~StructureCalculationData()
{
for (auto it = m_DataRows.begin(); it != m_DataRows.end(); ++it)
{
delete it.value();
}
m_DataRows.clear();
for (auto it = m_childModules.begin(); it != m_childModules.end(); ++it)
{
delete it.value();
}
m_childModules.clear();
}
int fromXml(const pugi::xml_node node);
int toXml(pugi::xml_node node);
void saveStructureCalcData(QString path);
// void updateData()
// {
// m_CalcBaseData.updateData();
// }
std::vector<std::string> &getAnalyseNameList();
private:
QString getDataRowValue(const QString &key);
void addOrUpdateDataRow(const QString &key, QString value = "", QString caption = "", QString remark = "");
bool createDataRow(const QString &key, QString value = "", QString caption = "", QString remark = "");
bool isEmpty();
bool CreateChildModulus(const QString &key, QString caption = "", QString remark = "");
private:
StructureCalDataBlock m_StructureCal; // 存储结构计算csx中xml节点值和相关子模块
QMap<QString, DataRowInf *> m_DataRows; // CSX中DataRows节点下的所有数据
std::vector<std::string> m_ModuleNames;
QMap<QString, DataRowInf *> m_childModules; // CSX中ChildModules节点下的所有子模块数据
std::vector<std::string> m_childModuleNames;
std::unique_ptr<::strength_set::StrengthSet> m_StrengthSet; // XSD表内存映射也是总纵强度的计算输入
};
#endif