#17636 [CEA 17369] Extrusion by normal: along average normal option issue

This commit is contained in:
eap 2019-09-06 19:02:21 +03:00
parent c64a5dc488
commit 2c751a0edd
3 changed files with 13 additions and 6 deletions

View File

@ -5850,6 +5850,11 @@ SMESH_MeshEditor::ExtrusionSweep (TIDSortedElemSet theElemSets[2],
} }
else else
{ {
if ( theParams.ToMakeBoundary() )
{
GetMeshDS()->Modified();
throw SALOME_Exception( SMESH_Comment("Can't extrude node #") << node->GetID() );
}
break; // newNodesItVec will be shorter than nbNodes break; // newNodesItVec will be shorter than nbNodes
} }
} }

View File

@ -1223,8 +1223,8 @@ bool SMESHGUI_ExtrusionDlg::ClickOnApply()
bool byAverageNormal = ByAverageNormalCheck->isChecked(); bool byAverageNormal = ByAverageNormalCheck->isChecked();
int dim = (maxSelType == SMESH::FACE) ? 2 : 1; int dim = (maxSelType == SMESH::FACE) ? 2 : 1;
groups = meshEditor->ExtrusionByNormal( faces, stepSize, nbSteps, useInputElemsOnly, groups = meshEditor->ExtrusionByNormal( faces, stepSize, nbSteps, byAverageNormal,
byAverageNormal, makeGroups, dim ); useInputElemsOnly, makeGroups, dim );
} }
else else
{ {
@ -1261,9 +1261,9 @@ bool SMESHGUI_ExtrusionDlg::ClickOnApply()
SMESH::Update( actor->getIO(), actor->GetVisibility() ); SMESH::Update( actor->getIO(), actor->GetVisibility() );
if ( makeGroups ) if ( makeGroups )
mySMESHGUI->updateObjBrowser(true); // new groups may appear mySMESHGUI->updateObjBrowser(true); // new groups may appear
Init(false);
mySelectionMgr->clearSelected(); mySelectionMgr->clearSelected();
SelectorWdg->Clear(); Init(false);
SMESHGUI::Modified(); SMESHGUI::Modified();
} }
@ -1615,8 +1615,8 @@ void SMESHGUI_ExtrusionDlg::onDisplaySimulation( bool toDisplayPreview )
bool byAverageNormal = ByAverageNormalCheck->isChecked(); bool byAverageNormal = ByAverageNormalCheck->isChecked();
int dim = (maxSelType == SMESH::FACE) ? 2 : 1; int dim = (maxSelType == SMESH::FACE) ? 2 : 1;
groups = meshEditor->ExtrusionByNormal( faces, stepSize, nbSteps, useInputElemsOnly, groups = meshEditor->ExtrusionByNormal( faces, stepSize, nbSteps, byAverageNormal,
byAverageNormal, makeGroups, dim ); useInputElemsOnly, makeGroups, dim );
} }
else else
{ {

View File

@ -5595,6 +5595,8 @@ class Mesh(metaclass = MeshMeta):
if isinstance( Elements, list ): if isinstance( Elements, list ):
if not Elements: if not Elements:
raise RuntimeError("Elements empty!") raise RuntimeError("Elements empty!")
if isinstance( Elements[0], Mesh ):
Elements = [ Elements[0].GetMesh() ]
if isinstance( Elements[0], int ): if isinstance( Elements[0], int ):
Elements = self.GetIDSource( Elements, SMESH.ALL ) Elements = self.GetIDSource( Elements, SMESH.ALL )
unRegister.set( Elements ) unRegister.set( Elements )