From 1d1547e84928d81519fdced4450bb3a3baeea760 Mon Sep 17 00:00:00 2001 From: FEA-eng <59876896+FEA-eng@users.noreply.github.com> Date: Fri, 19 Apr 2024 06:05:57 +0200 Subject: [PATCH] FEM: Add NetGen Min Size (#12794) --- src/Mod/Fem/App/FemMeshShapeNetgenObject.cpp | 2 ++ src/Mod/Fem/App/FemMeshShapeNetgenObject.h | 1 + src/Mod/Fem/Gui/TaskTetParameter.cpp | 11 +++++++++++ src/Mod/Fem/Gui/TaskTetParameter.h | 1 + src/Mod/Fem/Gui/TaskTetParameter.ui | 18 ++++++++++++++++++ 5 files changed, 33 insertions(+) diff --git a/src/Mod/Fem/App/FemMeshShapeNetgenObject.cpp b/src/Mod/Fem/App/FemMeshShapeNetgenObject.cpp index cc11e8f6d5..6f5e93a7f7 100644 --- a/src/Mod/Fem/App/FemMeshShapeNetgenObject.cpp +++ b/src/Mod/Fem/App/FemMeshShapeNetgenObject.cpp @@ -53,6 +53,7 @@ const char* FinenessEnums[] = FemMeshShapeNetgenObject::FemMeshShapeNetgenObject() { ADD_PROPERTY_TYPE(MaxSize, (1000), "MeshParams", Prop_None, "Maximum element size"); + ADD_PROPERTY_TYPE(MinSize, (0), "MeshParams", Prop_None, "Minimum element size"); ADD_PROPERTY_TYPE(SecondOrder, (true), "MeshParams", Prop_None, "Create quadric elements"); ADD_PROPERTY_TYPE(Fineness, (2), "MeshParams", Prop_None, "Fineness level of the mesh"); Fineness.setEnums(FinenessEnums); @@ -95,6 +96,7 @@ App::DocumentObjectExecReturn* FemMeshShapeNetgenObject::execute() NETGENPlugin_Hypothesis* tet = new NETGENPlugin_Hypothesis(0, 1, newMesh.getGenerator()); #endif tet->SetMaxSize(MaxSize.getValue()); + tet->SetMinSize(MinSize.getValue()); tet->SetSecondOrder(SecondOrder.getValue()); tet->SetOptimize(Optimize.getValue()); int iFineness = Fineness.getValue(); diff --git a/src/Mod/Fem/App/FemMeshShapeNetgenObject.h b/src/Mod/Fem/App/FemMeshShapeNetgenObject.h index 748cc868b1..e8d952df32 100644 --- a/src/Mod/Fem/App/FemMeshShapeNetgenObject.h +++ b/src/Mod/Fem/App/FemMeshShapeNetgenObject.h @@ -39,6 +39,7 @@ public: ~FemMeshShapeNetgenObject() override; App::PropertyFloat MaxSize; + App::PropertyFloat MinSize; App::PropertyBool SecondOrder; App::PropertyEnumeration Fineness; App::PropertyFloat GrowthRate; diff --git a/src/Mod/Fem/Gui/TaskTetParameter.cpp b/src/Mod/Fem/Gui/TaskTetParameter.cpp index 52b06a233c..8016febd5f 100644 --- a/src/Mod/Fem/Gui/TaskTetParameter.cpp +++ b/src/Mod/Fem/Gui/TaskTetParameter.cpp @@ -49,6 +49,7 @@ TaskTetParameter::TaskTetParameter(Fem::FemMeshShapeNetgenObject* pcObject, QWid this->groupLayout()->addWidget(proxy); ui->doubleSpinBox_MaxSize->setValue(pcObject->MaxSize.getValue()); + ui->doubleSpinBox_MinSize->setValue(pcObject->MinSize.getValue()); ui->comboBox_Fineness->setCurrentIndex(pcObject->Fineness.getValue()); ui->checkBox_SecondOrder->setChecked(pcObject->SecondOrder.getValue()); ui->doubleSpinBox_GrowthRate->setValue(pcObject->GrowthRate.getValue()); @@ -60,6 +61,10 @@ TaskTetParameter::TaskTetParameter(Fem::FemMeshShapeNetgenObject* pcObject, QWid qOverload(&QDoubleSpinBox::valueChanged), this, &TaskTetParameter::maxSizeValueChanged); + QObject::connect(ui->doubleSpinBox_MinSize, + qOverload(&QDoubleSpinBox::valueChanged), + this, + &TaskTetParameter::minSizeValueChanged); QObject::connect(ui->comboBox_Fineness, qOverload(&QComboBox::activated), this, @@ -120,6 +125,12 @@ void TaskTetParameter::maxSizeValueChanged(double Value) touched = true; } +void TaskTetParameter::minSizeValueChanged(double Value) +{ + pcObject->MinSize.setValue(Value); + touched = true; +} + void TaskTetParameter::setQuadric(int s) { pcObject->SecondOrder.setValue(s != 0); diff --git a/src/Mod/Fem/Gui/TaskTetParameter.h b/src/Mod/Fem/Gui/TaskTetParameter.h index 08809f6543..4f10781e1a 100644 --- a/src/Mod/Fem/Gui/TaskTetParameter.h +++ b/src/Mod/Fem/Gui/TaskTetParameter.h @@ -69,6 +69,7 @@ public: private Q_SLOTS: void SwitchMethod(int Value); void maxSizeValueChanged(double Value); + void minSizeValueChanged(double Value); void setQuadric(int s); void setGrowthRate(double v); void setSegsPerEdge(int v); diff --git a/src/Mod/Fem/Gui/TaskTetParameter.ui b/src/Mod/Fem/Gui/TaskTetParameter.ui index 5fe3b8d3ba..8f41bf617f 100644 --- a/src/Mod/Fem/Gui/TaskTetParameter.ui +++ b/src/Mod/Fem/Gui/TaskTetParameter.ui @@ -38,6 +38,24 @@ + + + + + + Min. Size: + + + + + + + 9999999.990000000223517 + + + + +