断层和裂缝名称更改后同步到data

feature/nm-para-property-20260615
lvjunjie 2 weeks ago
parent 410cba92f6
commit 9b36d2ad1d

@ -32,6 +32,9 @@ public:
// 查找图元对应的数据指针 // 查找图元对应的数据指针
nmDataFault* getFaultDataFor(nmObjLineFault* pGraphic); nmDataFault* getFaultDataFor(nmObjLineFault* pGraphic);
// 名称同步,由图元在 paintBack 中调用
void syncFaultName(nmObjLineFault* pGraphic);
// 调用:用户画完裂缝后 // 调用:用户画完裂缝后
void createCrackForGraphic(nmObjLineCrack* pGraphic); void createCrackForGraphic(nmObjLineCrack* pGraphic);
@ -44,6 +47,9 @@ public:
// 查找裂缝图元对应的数据指针 // 查找裂缝图元对应的数据指针
nmDataFracture* getCrackDataFor(nmObjLineCrack* pGraphic); nmDataFracture* getCrackDataFor(nmObjLineCrack* pGraphic);
// 名称同步,由图元在 paintBack 中调用
void syncCrackName(nmObjLineCrack* pGraphic);
// 切换分析时更新绑定的 DataManager并清理旧图元的残留映射 // 切换分析时更新绑定的 DataManager并清理旧图元的残留映射
void updateDataMgr(nmDataAnalyzeManager* pDataMgr); void updateDataMgr(nmDataAnalyzeManager* pDataMgr);

@ -13,6 +13,7 @@
#include "nmObjLineCrack.h" #include "nmObjLineCrack.h"
#include "nmPlotGraphicBinder.h" #include "nmPlotGraphicBinder.h"
#include "nmDataFracture.h"
#include "nmDataAnalyzeManager.h" #include "nmDataAnalyzeManager.h"
ZX_DEFINE_DYNAMIC(nObjLineFracture, nmObjLineCrack) ZX_DEFINE_DYNAMIC(nObjLineFracture, nmObjLineCrack)
@ -185,6 +186,11 @@ void nmObjLineCrack::paintBack(QPainter* painter, const ZxPaintParam& param)
return; return;
} }
// 名称同步,在绘制时通过 Binder 同步到数据中心
if (m_pGraphicBinder) {
m_pGraphicBinder->syncCrackName(this);
}
painter->save(); painter->save();
QVector<QPointF> pts = getPosOf(m_vecPoints); QVector<QPointF> pts = getPosOf(m_vecPoints);

@ -13,6 +13,7 @@
#include "nmObjLineFault.h" #include "nmObjLineFault.h"
#include "nmPlotGraphicBinder.h" #include "nmPlotGraphicBinder.h"
#include "nmDataFault.h"
ZX_DEFINE_DYNAMIC(nObjLineFault, nmObjLineFault) ZX_DEFINE_DYNAMIC(nObjLineFault, nmObjLineFault)
@ -192,6 +193,11 @@ void nmObjLineFault::paintBack(QPainter* painter, const ZxPaintParam& param) {
return; return;
} }
// 名称同步,在绘制时通过 Binder 同步到数据中心
if (m_pGraphicBinder) {
m_pGraphicBinder->syncFaultName(this);
}
painter->save(); painter->save();
QVector<QPointF> pts = getPosOf(m_vecPoints); QVector<QPointF> pts = getPosOf(m_vecPoints);

@ -73,6 +73,16 @@ nmDataFault* nmPlotGraphicBinder::getFaultDataFor(nmObjLineFault* pGraphic)
return m_mapFaultData.value(pGraphic, nullptr); return m_mapFaultData.value(pGraphic, nullptr);
} }
// 名称同步:检测图元名称与数据名称是否一致,不一致则同步
void nmPlotGraphicBinder::syncFaultName(nmObjLineFault* pGraphic)
{
if (!pGraphic) return;
nmDataFault* pData = m_mapFaultData.value(pGraphic, nullptr);
if (pData && pData->getFaultName() != pGraphic->getName()) {
pData->setFaultName(pGraphic->getName());
}
}
// 切换分析时更新绑定的 DataManager // 切换分析时更新绑定的 DataManager
// 旧图元已由 deleteAllPlotObjs 清除,清理残留映射避免悬空指针 // 旧图元已由 deleteAllPlotObjs 清除,清理残留映射避免悬空指针
void nmPlotGraphicBinder::updateDataMgr(nmDataAnalyzeManager* pDataMgr) void nmPlotGraphicBinder::updateDataMgr(nmDataAnalyzeManager* pDataMgr)
@ -265,6 +275,16 @@ nmDataFracture* nmPlotGraphicBinder::getCrackDataFor(nmObjLineCrack* pGraphic)
return m_mapCrackData.value(pGraphic, nullptr); return m_mapCrackData.value(pGraphic, nullptr);
} }
// 名称同步:检测图元名称与数据名称是否一致,不一致则同步
void nmPlotGraphicBinder::syncCrackName(nmObjLineCrack* pGraphic)
{
if (!pGraphic) return;
nmDataFracture* pData = m_mapCrackData.value(pGraphic, nullptr);
if (pData && pData->getFractureName() != pGraphic->getName()) {
pData->setFractureName(pGraphic->getName());
}
}
// 将裂缝数据值推到图元本地副本 // 将裂缝数据值推到图元本地副本
void nmPlotGraphicBinder::_pushCrackDataToGraphic(nmObjLineCrack* pGraphic, nmDataFracture* pData) void nmPlotGraphicBinder::_pushCrackDataToGraphic(nmObjLineCrack* pGraphic, nmDataFracture* pData)
{ {

Loading…
Cancel
Save