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

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

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

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

@ -23,6 +23,7 @@ class NM_SUB_WND_EXPORT nmSubWndGrid : public iSubWndBaseFit {
// 成果保存加载
virtual bool loadRsts();
virtual bool saveRsts();
virtual bool onConfirmClosing();
public slots:
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)
{
QString logMsg = "Input Parameters:\n";
@ -1074,4 +1083,4 @@ bool nmCalculationPebiGrid::generateOutputPara()
FreeLibrary(dll);
return true;
}
}

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

@ -100,6 +100,23 @@ bool nmSubWndGrid::saveRsts()
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()
{
QWidget* mainWidget = new QWidget(this);

Loading…
Cancel
Save