关闭网格界面时,清理网格数据

feature/DialogBox-20260526
lvjunjie 3 weeks ago
parent 1d51392990
commit 779b2b183e

@ -21,6 +21,8 @@ public:
bool meshGenPebi(); bool meshGenPebi();
// 设置PEBI GridControl控制参数 // 设置PEBI GridControl控制参数
void setGridControl(double gridControl); void setGridControl(double gridControl);
// 清理单例中的网格输入输出数据
void clearGridData();
private: private:
// 边界 // 边界

@ -446,6 +446,8 @@ class NM_DATA_EXPORT nmDataAnalyzeManager : public ZxDataObjectBin
void setUnstructuredGrid(vtkSmartPointer<vtkUnstructuredGrid> grid); void setUnstructuredGrid(vtkSmartPointer<vtkUnstructuredGrid> grid);
// 获取当前分析下的VTK网格对象 // 获取当前分析下的VTK网格对象
vtkSmartPointer<vtkUnstructuredGrid> getUnstructuredGrid() const; vtkSmartPointer<vtkUnstructuredGrid> getUnstructuredGrid() const;
// 清理当前分析下的VTK网格对象
void clearUnstructuredGrid();
// 获取当前分析下的VTK网格对象的深拷贝对象一般复制给m_pResultBaseGrid使用深拷贝防止场图污染网格 // 获取当前分析下的VTK网格对象的深拷贝对象一般复制给m_pResultBaseGrid使用深拷贝防止场图污染网格
vtkSmartPointer<vtkUnstructuredGrid> getUnstructuredGridCopy() const; vtkSmartPointer<vtkUnstructuredGrid> getUnstructuredGridCopy() const;

@ -23,6 +23,7 @@ class NM_SUB_WND_EXPORT nmSubWndGrid : public iSubWndBaseFit {
// 成果保存加载 // 成果保存加载
virtual bool loadRsts(); virtual bool loadRsts();
virtual bool saveRsts(); virtual bool saveRsts();
virtual bool onConfirmClosing();
public slots: public slots:
void updateGrid(); void updateGrid();

@ -91,6 +91,15 @@ void nmCalculationPebiGrid::setGridControl(double gridControl)
} }
} }
void nmCalculationPebiGrid::clearGridData()
{
// 关闭网格窗口后清空PEBI单例缓存避免后续求解误用旧网格输入输出。
p0 = HX_NWTM_GRID_INPUT();
p1 = HX_NWTM_GRID_OUTPUT1();
p2 = HX_NWTM_GRID_OUTPUT2();
m_dGridControl = p0.GridControl;
}
void nmCalculationPebiGrid::logInputParameters(const HX_NWTM_GRID_INPUT& input) void nmCalculationPebiGrid::logInputParameters(const HX_NWTM_GRID_INPUT& input)
{ {
QString logMsg = "Input Parameters:\n"; QString logMsg = "Input Parameters:\n";

@ -3561,6 +3561,12 @@ void nmDataAnalyzeManager::setUnstructuredGrid(vtkSmartPointer<vtkUnstructuredGr
m_pVtkUnstructuredGrid = grid; m_pVtkUnstructuredGrid = grid;
} }
void nmDataAnalyzeManager::clearUnstructuredGrid()
{
// 释放当前分析持有的实时VTK网格对象关闭网格窗口后不再保留旧网格。
m_pVtkUnstructuredGrid = nullptr;
}
vtkSmartPointer<vtkUnstructuredGrid> nmDataAnalyzeManager::getUnstructuredGridCopy() const vtkSmartPointer<vtkUnstructuredGrid> nmDataAnalyzeManager::getUnstructuredGridCopy() const
{ {
vtkSmartPointer<vtkUnstructuredGrid> pCopyGrid = vtkSmartPointer<vtkUnstructuredGrid>::New(); vtkSmartPointer<vtkUnstructuredGrid> pCopyGrid = vtkSmartPointer<vtkUnstructuredGrid>::New();

@ -100,6 +100,23 @@ bool nmSubWndGrid::saveRsts()
return pRstWnd->save(); return pRstWnd->save();
} }
bool nmSubWndGrid::onConfirmClosing()
{
// 先走基类关闭确认;用户取消关闭时不清理网格数据。
if(!iSubWndBaseFit::onConfirmClosing()) {
return false;
}
nmCalculationPebiGrid::getInstance()->clearGridData();
nmDataAnalyzeManager* pDataManager = nmDataAnalyzeManager::getCurrentInstance();
if(pDataManager != nullptr) {
pDataManager->clearUnstructuredGrid();
}
return true;
}
void nmSubWndGrid::initUI() void nmSubWndGrid::initUI()
{ {
QWidget* mainWidget = new QWidget(this); QWidget* mainWidget = new QWidget(this);

Loading…
Cancel
Save