2025-06-25 15:06:42 +08:00
|
|
|
#include "DataContainer/StabCalculationData.h"
|
|
|
|
#include "XmlSerialization.h"
|
|
|
|
|
|
|
|
int StabCalculationData::fromXml(const pugi::xml_node node)
|
|
|
|
{
|
|
|
|
|
|
|
|
if(node.empty())
|
|
|
|
{
|
|
|
|
return -1;
|
|
|
|
}
|
|
|
|
|
|
|
|
m_StabilityCal.fromXmlEx(node, m_childModules, m_childModuleNames, m_DataRows, m_ModuleNames);
|
|
|
|
|
|
|
|
std::string xml_string = getDataRowValue("Stab").toStdString();
|
|
|
|
|
|
|
|
XmlSerialization* xmlPtr = XmlSerialization::getXmlSerializationInstance();
|
|
|
|
xmlPtr->loadStabModelDS(xml_string);
|
|
|
|
|
|
|
|
m_CalcBaseData.fromXml();
|
|
|
|
|
|
|
|
// m_Name = node.attribute("Name").as_string();
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
|
|
|
|
void StabCalculationData::saveStabCalcData(QString path)
|
|
|
|
{
|
|
|
|
m_CalcBaseData.toXml();
|
|
|
|
|
|
|
|
XmlSerialization* xmlPtr = XmlSerialization::getXmlSerializationInstance();
|
|
|
|
xmlPtr->saveSerializationXMLFile(path);
|
|
|
|
}
|
|
|
|
std::vector<std::string>& StabCalculationData::getAnalyseNameList()
|
|
|
|
{
|
|
|
|
return m_childModuleNames;
|
|
|
|
}
|
|
|
|
|
2025-06-25 17:44:40 +08:00
|
|
|
int StabCalculationData::toXml(pugi::xml_node node)
|
2025-06-25 15:06:42 +08:00
|
|
|
{
|
|
|
|
m_CalcBaseData.toXml();
|
|
|
|
XmlSerialization* xmlPtr = XmlSerialization::getXmlSerializationInstance();
|
2025-06-25 17:44:40 +08:00
|
|
|
std::string strValue = xmlPtr->saveSerializationXMLString();
|
2025-06-25 15:06:42 +08:00
|
|
|
|
|
|
|
addOrUpdateDataRow("Stab", QString::fromStdString(strValue));
|
2025-06-25 17:44:40 +08:00
|
|
|
m_StabilityCal.toXml(node, m_DataRows, m_childModules, m_childModuleNames);
|
2025-06-25 15:06:42 +08:00
|
|
|
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void StabCalculationData::addHydroBInfo(BInf& info)
|
|
|
|
{
|
|
|
|
m_Hydro.addBInfData(info);
|
|
|
|
}
|
|
|
|
|
|
|
|
BInf* StabCalculationData::FindByParamID(std::string strParamID)
|
|
|
|
{
|
|
|
|
return m_Hydro.FindByParamID(strParamID);
|
|
|
|
}
|
|
|
|
|
|
|
|
void StabCalculationData::AddXLabelRow(XLabel& data)
|
|
|
|
{
|
|
|
|
bool bf = false;
|
|
|
|
auto it = StabCalcBaseData::xlabel_data_grid_view.begin();
|
|
|
|
for (; it != StabCalcBaseData::xlabel_data_grid_view.end(); ++it)
|
|
|
|
{
|
|
|
|
if (it->id == data.id)
|
|
|
|
{
|
|
|
|
it->x = data.x;
|
|
|
|
bf = true;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if (!bf)
|
|
|
|
{
|
|
|
|
StabCalcBaseData::xlabel_data_grid_view.emplace_back(data);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
void StabCalculationData::AddStationLabelRow(StationLabel& data)
|
|
|
|
{
|
|
|
|
|
|
|
|
bool bf = false;
|
|
|
|
auto it = StabCalcBaseData::station_label_data_grid_view.begin();
|
|
|
|
for (; it != StabCalcBaseData::station_label_data_grid_view.end(); ++it)
|
|
|
|
{
|
|
|
|
if (it->id == data.id)
|
|
|
|
{
|
|
|
|
it->pos = data.pos;
|
|
|
|
bf = true;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if (!bf)
|
|
|
|
{
|
|
|
|
StabCalcBaseData::station_label_data_grid_view.emplace_back(data);
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
void StabCalculationData::AddWaterlineLabelRow(WaterlineLabel& data)
|
|
|
|
{
|
|
|
|
|
|
|
|
bool bf = false;
|
|
|
|
auto it = StabCalcBaseData::waterline_label_data_grid_view.begin();
|
|
|
|
for (; it != StabCalcBaseData::waterline_label_data_grid_view.end(); ++it)
|
|
|
|
{
|
|
|
|
if (it->id == data.id)
|
|
|
|
{
|
|
|
|
it->pos = data.pos;
|
|
|
|
bf = true;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if (!bf)
|
|
|
|
{
|
|
|
|
StabCalcBaseData::waterline_label_data_grid_view.emplace_back(data);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
void StabCalculationData::AddButtocklineLabelRow(ButtocklineLabel& data)
|
|
|
|
{
|
|
|
|
bool bf = false;
|
|
|
|
auto it = StabCalcBaseData::buttockline_label_data_grid_view.begin();
|
|
|
|
for (; it != StabCalcBaseData::buttockline_label_data_grid_view.end(); ++it)
|
|
|
|
{
|
|
|
|
if (it->id == data.id)
|
|
|
|
{
|
|
|
|
it->pos = data.pos;
|
|
|
|
bf = true;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if (!bf)
|
|
|
|
{
|
|
|
|
StabCalcBaseData::buttockline_label_data_grid_view.emplace_back(data);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
bool StabCalculationData::isEmpty()
|
|
|
|
{
|
|
|
|
if (m_DataRows.size() > 0)
|
|
|
|
{
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
|
|
|
|
QString StabCalculationData::getDataRowValue(const QString& key)
|
|
|
|
{
|
|
|
|
if (!m_DataRows.contains(key))
|
|
|
|
return "";
|
|
|
|
QString dd = m_DataRows[key]->Value();
|
|
|
|
return dd;
|
|
|
|
}
|
|
|
|
|
|
|
|
void StabCalculationData::addOrUpdateDataRow(const QString& key, QString value , QString caption, QString remark )
|
|
|
|
{
|
|
|
|
if (key.isEmpty())
|
|
|
|
return;
|
|
|
|
|
|
|
|
if (!m_DataRows.contains(key))
|
|
|
|
{
|
|
|
|
DataRowInf* o = new DataRowInf();
|
|
|
|
o->setID(key);
|
|
|
|
o->setCaption(caption);
|
|
|
|
o->setRemark(remark);
|
|
|
|
o->setValue(value);
|
|
|
|
m_DataRows.insert(key, o);
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
DataRowInf* o = m_DataRows.value(key);
|
|
|
|
o->setCaption(caption);
|
|
|
|
o->setRemark(remark);
|
|
|
|
o->setValue(value);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
bool StabCalculationData::createDataRow(const QString& key, QString value, QString caption, QString remark )
|
|
|
|
{
|
|
|
|
if (!m_DataRows.contains(key))
|
|
|
|
{
|
|
|
|
DataRowInf* o = new DataRowInf();
|
|
|
|
o->setID(key);
|
|
|
|
o->setCaption(caption);
|
|
|
|
o->setRemark(remark);
|
|
|
|
o->setValue(value);
|
|
|
|
m_DataRows.insert(key, o);
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
|
|
|
|
bool StabCalculationData::CreateChildModulus(const QString& key, QString caption, QString remark)
|
|
|
|
{
|
|
|
|
if (!m_childModules.contains(key))
|
|
|
|
{
|
|
|
|
DataRowInf* o = new DataRowInf();
|
|
|
|
o->setID(key);
|
|
|
|
o->setCaption(caption);
|
|
|
|
o->setRemark(remark);
|
|
|
|
o->setValue("");
|
|
|
|
m_childModules.insert(key, o);
|
|
|
|
m_childModuleNames.push_back(key.toStdString());
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
return false;
|
|
|
|
}
|