From da033b5a82f3ca39c627b68e81ff8c11c8469509 Mon Sep 17 00:00:00 2001 From: lvjunjie Date: Wed, 5 Aug 2026 11:36:55 +0800 Subject: [PATCH] =?UTF-8?q?=E6=89=A9=E5=B1=95=E7=BD=91=E6=A0=BC=E5=B1=9E?= =?UTF-8?q?=E6=80=A7=E6=8F=92=E5=80=BC=E6=95=B0=E6=8D=AE=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Include/nmNum/nmData/nmDataAnalyzeManager.h | 11 +++++ Src/nmNum/nmData/nmDataAnalyzeManager.cpp | 47 ++++++++++++++++++++- 2 files changed, 56 insertions(+), 2 deletions(-) diff --git a/Include/nmNum/nmData/nmDataAnalyzeManager.h b/Include/nmNum/nmData/nmDataAnalyzeManager.h index 9512d01..a2a0f4e 100644 --- a/Include/nmNum/nmData/nmDataAnalyzeManager.h +++ b/Include/nmNum/nmData/nmDataAnalyzeManager.h @@ -72,6 +72,11 @@ struct NM_DATA_EXPORT nmPropertyInterpolationPointData { struct NM_DATA_EXPORT nmPropertyInterpolationDataSet { nmPropertyInterpolationDataSet() : property("k"), + xDisplayUnit("m"), + yDisplayUnit("m"), + valueDisplayUnit("mD"), + rangeDisplayUnit("m"), + useForCalculation(false), showPoints(true), showLabels(true), nugget(0.01), @@ -83,6 +88,12 @@ struct NM_DATA_EXPORT nmPropertyInterpolationDataSet { QString name; QString property; + // 仅记录界面显示单位;坐标、Range及属性值始终按基准单位保存. + QString xDisplayUnit; + QString yDisplayUnit; + QString valueDisplayUnit; + QString rangeDisplayUnit; + bool useForCalculation; QVector points; bool showPoints; bool showLabels; diff --git a/Src/nmNum/nmData/nmDataAnalyzeManager.cpp b/Src/nmNum/nmData/nmDataAnalyzeManager.cpp index 343d60f..d615efd 100644 --- a/Src/nmNum/nmData/nmDataAnalyzeManager.cpp +++ b/Src/nmNum/nmData/nmDataAnalyzeManager.cpp @@ -3530,7 +3530,7 @@ bool nmDataAnalyzeManager::ReadProjectData(const QString & filePath) } } - /* 读取属性插值数据组;旧成果没有该节点时保持为空 */ + /* 读取属性插值数据组 */ if(doc.HasMember("PropertyInterpolationDataSets") && doc["PropertyInterpolationDataSets"].IsArray()) { const rapidjson::Value& dataSetsJson = doc["PropertyInterpolationDataSets"]; @@ -3548,6 +3548,36 @@ bool nmDataAnalyzeManager::ReadProjectData(const QString & filePath) if(dataSetJson.HasMember("Property") && dataSetJson["Property"].IsString()) { dataSet.property = QString::fromUtf8(dataSetJson["Property"].GetString()); } + if(dataSet.property == "h") { + dataSet.valueDisplayUnit = "m"; + } + else if(dataSet.property == "phi") { + dataSet.valueDisplayUnit.clear(); + } + if(dataSetJson.HasMember("XDisplayUnit") && + dataSetJson["XDisplayUnit"].IsString()) { + dataSet.xDisplayUnit = QString::fromUtf8( + dataSetJson["XDisplayUnit"].GetString()); + } + if(dataSetJson.HasMember("YDisplayUnit") && + dataSetJson["YDisplayUnit"].IsString()) { + dataSet.yDisplayUnit = QString::fromUtf8( + dataSetJson["YDisplayUnit"].GetString()); + } + if(dataSetJson.HasMember("ValueDisplayUnit") && + dataSetJson["ValueDisplayUnit"].IsString()) { + dataSet.valueDisplayUnit = QString::fromUtf8( + dataSetJson["ValueDisplayUnit"].GetString()); + } + if(dataSetJson.HasMember("RangeDisplayUnit") && + dataSetJson["RangeDisplayUnit"].IsString()) { + dataSet.rangeDisplayUnit = QString::fromUtf8( + dataSetJson["RangeDisplayUnit"].GetString()); + } + if(dataSetJson.HasMember("UseForCalculation") && + dataSetJson["UseForCalculation"].IsBool()) { + dataSet.useForCalculation = dataSetJson["UseForCalculation"].GetBool(); + } if(dataSetJson.HasMember("ShowPoints") && dataSetJson["ShowPoints"].IsBool()) { dataSet.showPoints = dataSetJson["ShowPoints"].GetBool(); } @@ -3808,7 +3838,7 @@ bool nmDataAnalyzeManager::WriteProjectData(const QString & filePath) doc.AddMember("Layers", layersJsonArray, allocator); - /* 保存属性插值数据组 */ + /* 保存属性插值数据组;数值统一使用m、D等求解器基准单位 */ rapidjson::Value interpolationDataSetsJson(rapidjson::kArrayType); for(int dataSetIndex = 0; dataSetIndex < m_vecPropertyInterpolationDataSets.size(); @@ -3823,6 +3853,19 @@ bool nmDataAnalyzeManager::WriteProjectData(const QString & filePath) rapidjson::Value(nameUtf8.constData(), allocator).Move(), allocator); dataSetJson.AddMember("Property", rapidjson::Value(propertyUtf8.constData(), allocator).Move(), allocator); + QByteArray xDisplayUnitUtf8 = dataSet.xDisplayUnit.toUtf8(); + QByteArray yDisplayUnitUtf8 = dataSet.yDisplayUnit.toUtf8(); + QByteArray valueDisplayUnitUtf8 = dataSet.valueDisplayUnit.toUtf8(); + QByteArray rangeDisplayUnitUtf8 = dataSet.rangeDisplayUnit.toUtf8(); + dataSetJson.AddMember("XDisplayUnit", + rapidjson::Value(xDisplayUnitUtf8.constData(), allocator).Move(), allocator); + dataSetJson.AddMember("YDisplayUnit", + rapidjson::Value(yDisplayUnitUtf8.constData(), allocator).Move(), allocator); + dataSetJson.AddMember("ValueDisplayUnit", + rapidjson::Value(valueDisplayUnitUtf8.constData(), allocator).Move(), allocator); + dataSetJson.AddMember("RangeDisplayUnit", + rapidjson::Value(rangeDisplayUnitUtf8.constData(), allocator).Move(), allocator); + dataSetJson.AddMember("UseForCalculation", dataSet.useForCalculation, allocator); dataSetJson.AddMember("ShowPoints", dataSet.showPoints, allocator); dataSetJson.AddMember("ShowLabels", dataSet.showLabels, allocator); dataSetJson.AddMember("Nugget", dataSet.nugget, allocator);