From 54df188f6465dc757a24530f2a049197114ecf37 Mon Sep 17 00:00:00 2001 From: eap Date: Mon, 26 May 2008 14:14:19 +0000 Subject: [PATCH] PAL19802 A "Clear Mesh data" method for SMESH.Mesh objects --- doc/salome/gui/SMESH/images/mesh_clear.png | Bin 0 -> 610 bytes idl/SMESH_Mesh.idl | 5 + resources/Makefile.am | 1 + resources/mesh_clear.png | Bin 0 -> 610 bytes src/SMESH/SMESH_Mesh.cxx | 48 ++++ src/SMESH/SMESH_Mesh.hxx | 4 + src/SMESH/SMESH_subMesh.cxx | 4 +- src/SMESHGUI/SMESHGUI.cxx | 48 +++- src/SMESHGUI/SMESH_images.po | 3 + src/SMESHGUI/SMESH_msg_en.po | 9 + src/SMESH_I/SMESH_2smeshpy.cxx | 1 + src/SMESH_I/SMESH_Mesh_i.cxx | 20 +- src/SMESH_I/SMESH_Mesh_i.hxx | 3 + src/SMESH_SWIG/smeshDC.py | 273 ++++++++------------- 14 files changed, 248 insertions(+), 171 deletions(-) create mode 100644 doc/salome/gui/SMESH/images/mesh_clear.png create mode 100644 resources/mesh_clear.png diff --git a/doc/salome/gui/SMESH/images/mesh_clear.png b/doc/salome/gui/SMESH/images/mesh_clear.png new file mode 100644 index 0000000000000000000000000000000000000000..0d44a126d195c7c026e3848602e3557d105f98b1 GIT binary patch literal 610 zcmV-o0-gPdP)q+SKfUo-R9 z-{8X$B7#y15dozL)_c!6FH~6oTu$8Ke9Xa|DWwqL(~Fn%ZYBV1D2#_ORk3t7D8PVB zY3_t7$+6t3QNX` z#Ajb|1?#lKN|@L53e#unTh?0BjZXeGc?ssXd=6R%1aAYCA7wk|;q~`xF-wD8T2^)i wKtngs%|~cyChiA1sI@j5S-P&P25e@30k$wHlmp3VMF0Q*07*qoM6N<$f>V$Sc>n+a literal 0 HcmV?d00001 diff --git a/idl/SMESH_Mesh.idl b/idl/SMESH_Mesh.idl index b04164177..27f89506d 100644 --- a/idl/SMESH_Mesh.idl +++ b/idl/SMESH_Mesh.idl @@ -204,6 +204,11 @@ module SMESH GEOM::GEOM_Object GetShapeToMesh() raises (SALOME::SALOME_Exception); + /*! + * Remove all nodes and elements + */ + void Clear() + raises (SALOME::SALOME_Exception); /*! * Get the subMesh object associated to a subShape. The subMesh object diff --git a/resources/Makefile.am b/resources/Makefile.am index d4c2d9fc2..f660266d2 100644 --- a/resources/Makefile.am +++ b/resources/Makefile.am @@ -39,6 +39,7 @@ dist_salomeres_DATA = \ mesh_area.png \ mesh_aspect.png \ mesh_aspect_3d.png \ + mesh_clear.png \ mesh_compute.png \ mesh_connectivity.png \ mesh_diagonal.png \ diff --git a/resources/mesh_clear.png b/resources/mesh_clear.png new file mode 100644 index 0000000000000000000000000000000000000000..0d44a126d195c7c026e3848602e3557d105f98b1 GIT binary patch literal 610 zcmV-o0-gPdP)q+SKfUo-R9 z-{8X$B7#y15dozL)_c!6FH~6oTu$8Ke9Xa|DWwqL(~Fn%ZYBV1D2#_ORk3t7D8PVB zY3_t7$+6t3QNX` z#Ajb|1?#lKN|@L53e#unTh?0BjZXeGc?ssXd=6R%1aAYCA7wk|;q~`xF-wD8T2^)i wKtngs%|~cyChiA1sI@j5S-P&P25e@30k$wHlmp3VMF0Q*07*qoM6N<$f>V$Sc>n+a literal 0 HcmV?d00001 diff --git a/src/SMESH/SMESH_Mesh.cxx b/src/SMESH/SMESH_Mesh.cxx index 0b361a52b..581f50c87 100644 --- a/src/SMESH/SMESH_Mesh.cxx +++ b/src/SMESH/SMESH_Mesh.cxx @@ -201,6 +201,54 @@ const TopoDS_Solid& SMESH_Mesh::PseudoShape() return aSolid; } +//======================================================================= +/*! + * \brief Remove all nodes and elements + */ +//======================================================================= + +void SMESH_Mesh::Clear() +{ + // clear sub-meshes; get ready to re-compute as a side-effect + + if ( SMESH_subMesh *sm = GetSubMeshContaining( GetShapeToMesh() ) ) + { + SMESH_subMeshIteratorPtr smIt = sm->getDependsOnIterator(/*includeSelf=*/true, + /*complexShapeFirst=*/false); + while ( smIt->more() ) + { + sm = smIt->next(); + TopAbs_ShapeEnum shapeType = sm->GetSubShape().ShapeType(); + if ( shapeType == TopAbs_VERTEX || shapeType < TopAbs_SOLID ) + // all other shapes depends on vertices so they are already cleaned + sm->ComputeStateEngine( SMESH_subMesh::CLEAN ); + } + } + + // clear entities not on sub-meshes + + SMDS_VolumeIteratorPtr vIt = _myMeshDS->volumesIterator(); + while ( vIt->more() ) + _myMeshDS->RemoveFreeElement( vIt->next(), 0 ); + + SMDS_FaceIteratorPtr fIt = _myMeshDS->facesIterator(); + while ( fIt->more() ) + _myMeshDS->RemoveFreeElement( fIt->next(), 0 ); + + SMDS_EdgeIteratorPtr eIt = _myMeshDS->edgesIterator(); + while ( eIt->more() ) + _myMeshDS->RemoveFreeElement( eIt->next(), 0 ); + + SMDS_NodeIteratorPtr nIt = _myMeshDS->nodesIterator(); + while ( nIt->more() ) { + const SMDS_MeshNode * node = nIt->next(); + if ( node->NbInverseElements() == 0 ) + _myMeshDS->RemoveFreeNode( node, 0 ); + else + _myMeshDS->RemoveNode(node); + } +} + //======================================================================= //function : UNVToMesh //purpose : diff --git a/src/SMESH/SMESH_Mesh.hxx b/src/SMESH/SMESH_Mesh.hxx index 3005f678e..46ef2a959 100644 --- a/src/SMESH/SMESH_Mesh.hxx +++ b/src/SMESH/SMESH_Mesh.hxx @@ -82,6 +82,10 @@ public: */ static const TopoDS_Solid& PseudoShape(); + /*! + * \brief Remove all nodes and elements + */ + void Clear(); int UNVToMesh(const char* theFileName); /*! diff --git a/src/SMESH/SMESH_subMesh.cxx b/src/SMESH/SMESH_subMesh.cxx index e0891b1d6..017107a34 100644 --- a/src/SMESH/SMESH_subMesh.cxx +++ b/src/SMESH/SMESH_subMesh.cxx @@ -1223,8 +1223,10 @@ bool SMESH_subMesh::ComputeStateEngine(int event) _computeState = READY_TO_COMPUTE; SMESHDS_SubMesh* smDS = GetSubMeshDS(); if ( smDS && smDS->NbNodes() ) { - if ( event == CLEAN ) // this occures for algo which !NeedDescretBoundary() (PAL19272) + if ( event == CLEAN ) { + CleanDependants(); cleanSubMesh( this ); + } else _computeState = COMPUTE_OK; } diff --git a/src/SMESHGUI/SMESHGUI.cxx b/src/SMESHGUI/SMESHGUI.cxx index 61c953327..45044586b 100644 --- a/src/SMESHGUI/SMESHGUI.cxx +++ b/src/SMESHGUI/SMESHGUI.cxx @@ -1513,6 +1513,7 @@ bool SMESHGUI::OnGUIEvent( int theCommandID ) new SMESHGUI_BuildCompoundDlg( this ); } break; + case 407: // DIAGONAL INVERSION case 408: // Delete diagonal { @@ -2143,6 +2144,38 @@ bool SMESHGUI::OnGUIEvent( int theCommandID ) } break; } + case 4043: { // CLEAR_MESH + + if(checkLock(aStudy)) break; + + SALOME_ListIO selected; + if( LightApp_SelectionMgr *aSel = SMESHGUI::selectionMgr() ) + aSel->selectedObjects( selected ); + + SUIT_OverrideCursor wc; + SALOME_ListIteratorOfListIO It (selected); + for ( ; It.More(); It.Next() ) + { + Handle(SALOME_InteractiveObject) IOS = It.Value(); + SMESH::SMESH_Mesh_var aMesh = + SMESH::IObjectToInterface(IOS); + if ( aMesh->_is_nil()) continue; + try { + SMESH::UpdateView(SMESH::eErase, IOS->getEntry()); + aMesh->Clear(); + _PTR(SObject) aMeshSObj = SMESH::FindSObject(aMesh); + SMESH::ModifiedMesh( aMeshSObj, false, true); + } + catch (const SALOME::SALOME_Exception& S_ex){ + wc.suspend(); + SalomeApp_Tools::QtCatchCorbaException(S_ex); + wc.resume(); + } + } + SMESH::UpdateView(); + updateObjBrowser(); + break; + } case 4051: // RENUMBERING NODES { if(checkLock(aStudy)) break; @@ -2533,6 +2566,7 @@ void SMESHGUI::initialize( CAM_Application* app ) createSMESHAction( 4032, "HEXA", "ICON_DLG_HEXAS" ); createSMESHAction( 4041, "REMOVE_NODES", "ICON_DLG_REM_NODE" ); createSMESHAction( 4042, "REMOVE_ELEMENTS", "ICON_DLG_REM_ELEMENT" ); + createSMESHAction( 4043, "CLEAR_MESH" , "ICON_CLEAR_MESH" ); createSMESHAction( 4051, "RENUM_NODES", "ICON_DLG_RENUMBERING_NODES" ); createSMESHAction( 4052, "RENUM_ELEMENTS", "ICON_DLG_RENUMBERING_ELEMENTS" ); createSMESHAction( 4061, "TRANS", "ICON_SMESH_TRANSLATION_VECTOR" ); @@ -2624,7 +2658,7 @@ void SMESHGUI::initialize( CAM_Application* app ) createMenu( 5105, toolsId, -1 ); - createMenu( 702, meshId, -1 ); + createMenu( 702, meshId, -1 ); // "Mesh" menu createMenu( 703, meshId, -1 ); createMenu( 704, meshId, -1 ); createMenu( 710, meshId, -1 ); @@ -2683,6 +2717,7 @@ void SMESHGUI::initialize( CAM_Application* app ) createMenu( 4041, removeId, -1 ); createMenu( 4042, removeId, -1 ); + createMenu( 4043, removeId, -1 ); createMenu( 4051, renumId, -1 ); createMenu( 4052, renumId, -1 ); @@ -2770,6 +2805,7 @@ void SMESHGUI::initialize( CAM_Application* app ) createTool( separator(), addRemTb ); createTool( 4041, addRemTb ); createTool( 4042, addRemTb ); + createTool( 4043, addRemTb ); createTool( separator(), addRemTb ); createTool( 4051, addRemTb ); createTool( 4052, addRemTb ); @@ -2833,12 +2869,16 @@ void SMESHGUI::initialize( CAM_Application* app ) createPopupItem( 801, OB, mesh ); // CREATE_GROUP createPopupItem( 802, OB, subMesh ); // CONSTRUCT_GROUP popupMgr()->insert( separator(), -1, 0 ); - createPopupItem( 1100, OB, hypo, "" /*"&& $hasReference={false}"*/ ); // EDIT HYPOTHESIS + createPopupItem( 1100, OB, hypo); // EDIT HYPOTHESIS createPopupItem( 1102, OB, hyp_alg ); // REMOVE HYPOTHESIS / ALGORITHMS - createPopupItem( 1101, OB, mesh_group + " " + hyp_alg, "" /*"&& $hasReference={false}"*/ ); // RENAME + createPopupItem( 1101, OB, mesh_group + " " + hyp_alg ); // RENAME popupMgr()->insert( separator(), -1, 0 ); + createPopupItem( 4043, OB, mesh ); // CLEAR_MESH + popupMgr()->insert( separator(), -1, 0 ); + + QString nbSelected = QtxPopupMgr::Selection::defSelCountParam(); + QString only_one_non_empty = QString( " && %1=1 && numberOfNodes>0" ).arg( nbSelected ); - QString only_one_non_empty = QString( " && %1=1 && numberOfNodes>0" ).arg( QtxPopupMgr::Selection::defSelCountParam() ); createPopupItem( 125, OB, mesh, only_one_non_empty ); // EXPORT_MED createPopupItem( 126, OB, mesh, only_one_non_empty ); // EXPORT_UNV createPopupItem( 141, OB, mesh, only_one_non_empty ); // EXPORT_STL diff --git a/src/SMESHGUI/SMESH_images.po b/src/SMESHGUI/SMESH_images.po index fa3443962..aa4e9d782 100644 --- a/src/SMESHGUI/SMESH_images.po +++ b/src/SMESHGUI/SMESH_images.po @@ -304,6 +304,9 @@ msgstr "mesh_compute.png" msgid "ICON_BUILD_COMPOUND" msgstr "mesh_build_compound.png" +msgid "ICON_CLEAR_MESH" +msgstr "mesh_clear.png" + msgid "ICON_UNION" msgstr "mesh_unionGroups.png" diff --git a/src/SMESHGUI/SMESH_msg_en.po b/src/SMESHGUI/SMESH_msg_en.po index 22b2fa827..f4831978a 100644 --- a/src/SMESHGUI/SMESH_msg_en.po +++ b/src/SMESHGUI/SMESH_msg_en.po @@ -2514,6 +2514,9 @@ msgstr "Quality controls" msgid "MEN_RENAME" msgstr "Rename" +msgid "MEN_CLEAR_MESH" +msgstr "Clear Mesh Data" + msgid "MEN_UNASSIGN" msgstr "Unassign" @@ -2834,6 +2837,9 @@ msgstr "Update" msgid "TOP_RENAME" msgstr "Rename" +msgid "TOP_CLEAR_MESH" +msgstr "Clear Mesh Data" + msgid "TOP_UNASSIGN" msgstr "Unassign" @@ -3156,6 +3162,9 @@ msgstr "Update" msgid "STB_RENAME" msgstr "Rename" +msgid "STB_CLEAR_MESH" +msgstr "Clear Mesh Data" + msgid "STB_UNASSIGN" msgstr "Unassign" diff --git a/src/SMESH_I/SMESH_2smeshpy.cxx b/src/SMESH_I/SMESH_2smeshpy.cxx index b7a315de0..5b6567158 100644 --- a/src/SMESH_I/SMESH_2smeshpy.cxx +++ b/src/SMESH_I/SMESH_2smeshpy.cxx @@ -753,6 +753,7 @@ bool _pyMesh::NeedMeshAccess( const Handle(_pyCommand)& theCommand ) "GetNodeInverseElements","GetShapeID","GetShapeIDForElem","GetElemNbNodes", "GetElemNode","IsMediumNode","IsMediumNodeOfAnyElem","ElemNbEdges","ElemNbFaces", "IsPoly","IsQuadratic","BaryCenter","GetHypothesisList", "SetAutoColor", "GetAutoColor", + "Clear" "" }; // <- mark of end sameMethods.Insert( names ); } diff --git a/src/SMESH_I/SMESH_Mesh_i.cxx b/src/SMESH_I/SMESH_Mesh_i.cxx index 599d9c6df..1e1b391ac 100644 --- a/src/SMESH_I/SMESH_Mesh_i.cxx +++ b/src/SMESH_I/SMESH_Mesh_i.cxx @@ -175,7 +175,7 @@ CORBA::Boolean SMESH_Mesh_i::HasShapeToMesh() //======================================================================= GEOM::GEOM_Object_ptr SMESH_Mesh_i::GetShapeToMesh() - throw (SALOME::SALOME_Exception) + throw (SALOME::SALOME_Exception) { Unexpect aCatch(SALOME_SalomeException); GEOM::GEOM_Object_var aShapeObj; @@ -190,6 +190,24 @@ GEOM::GEOM_Object_ptr SMESH_Mesh_i::GetShapeToMesh() return aShapeObj._retn(); } +//================================================================================ +/*! + * \brief Remove all nodes and elements + */ +//================================================================================ + +void SMESH_Mesh_i::Clear() throw (SALOME::SALOME_Exception) +{ + Unexpect aCatch(SALOME_SalomeException); + try { + _impl->Clear(); + } + catch(SALOME_Exception & S_ex) { + THROW_SALOME_CORBA_EXCEPTION(S_ex.what(), SALOME::BAD_PARAM); + } + TPythonDump() << _this() << ".Clear()"; +} + //============================================================================= /*! * diff --git a/src/SMESH_I/SMESH_Mesh_i.hxx b/src/SMESH_I/SMESH_Mesh_i.hxx index 20cfca213..e06f88022 100644 --- a/src/SMESH_I/SMESH_Mesh_i.hxx +++ b/src/SMESH_I/SMESH_Mesh_i.hxx @@ -74,6 +74,9 @@ public: GEOM::GEOM_Object_ptr GetShapeToMesh() throw (SALOME::SALOME_Exception); + void Clear() + throw (SALOME::SALOME_Exception); + SMESH::Hypothesis_Status AddHypothesis(GEOM::GEOM_Object_ptr aSubShapeObject, SMESH::SMESH_Hypothesis_ptr anHyp) throw (SALOME::SALOME_Exception); diff --git a/src/SMESH_SWIG/smeshDC.py b/src/SMESH_SWIG/smeshDC.py index 25858311d..dfeeb306c 100644 --- a/src/SMESH_SWIG/smeshDC.py +++ b/src/SMESH_SWIG/smeshDC.py @@ -885,8 +885,18 @@ class Mesh: pass return ok + ## Removes all nodes and elements + # @ingroup l2_construct + def Clear(self): + self.mesh.Clear() + if salome.sg.hasDesktop(): + smeshgui = salome.ImportComponentGUI("SMESH") + smeshgui.Init(salome.myStudyId) + smeshgui.SetMeshIcon( salome.ObjectToID( self.mesh ), False, True ) + salome.sg.updateObjBrowser(1) + ## Computes a tetrahedral mesh using AutomaticLength + MEFISTO + NETGEN - # The parameter \a fineness [0,-1] defines mesh fineness + # @param fineness [0,-1] defines mesh fineness # @return True or False # @ingroup l3_algos_basic def AutomaticTetrahedralization(self, fineness=0): @@ -903,7 +913,7 @@ class Mesh: return self.Compute() ## Computes an hexahedral mesh using AutomaticLength + Quadrangle + Hexahedron - # The parameter \a fineness [0,-1] defines mesh fineness + # @param fineness [0,-1] defines mesh fineness # @return True or False # @ingroup l3_algos_basic def AutomaticHexahedralization(self, fineness=0): @@ -3193,129 +3203,100 @@ class Mesh_Triangle(Mesh_Algorithm): print "Netgen 1D-2D algo doesn't support this hypothesis" return None - ## Sets a way to define size of mesh elements to generate - # @param thePhysicalMesh is: DefaultSize or Custom - # Parameter of BLSURF algo + ## Sets a way to define size of mesh elements to generate. + # @param thePhysicalMesh is: DefaultSize or Custom. # @ingroup l3_hypos_blsurf def SetPhysicalMesh(self, thePhysicalMesh=DefaultSize): - if self.params == 0: - self.Parameters() - self.params.SetPhysicalMesh(thePhysicalMesh) + # Parameter of BLSURF algo + self.Parameters().SetPhysicalMesh(thePhysicalMesh) - ## Sets size of mesh elements to generate - # Parameter of BLSURF algo + ## Sets size of mesh elements to generate. # @ingroup l3_hypos_blsurf def SetPhySize(self, theVal): - if self.params == 0: - self.Parameters() - self.params.SetPhySize(theVal) + # Parameter of BLSURF algo + self.Parameters().SetPhySize(theVal) - ## Sets lower boundary of mesh element size (PhySize) - # Parameter of BLSURF algo + ## Sets lower boundary of mesh element size (PhySize). # @ingroup l3_hypos_blsurf def SetPhyMin(self, theVal=-1): - if self.params == 0: - self.Parameters() - self.params.SetPhyMin(theVal) + # Parameter of BLSURF algo + self.Parameters().SetPhyMin(theVal) - ## Sets upper boundary of mesh element size (PhySize) - # Parameter of BLSURF algo + ## Sets upper boundary of mesh element size (PhySize). # @ingroup l3_hypos_blsurf def SetPhyMax(self, theVal=-1): - if self.params == 0: - self.Parameters() - self.params.SetPhyMax(theVal) + # Parameter of BLSURF algo + self.Parameters().SetPhyMax(theVal) - ## Sets a way to define maximum angular deflection of mesh from CAD model + ## Sets a way to define maximum angular deflection of mesh from CAD model. # @param theGeometricMesh is: DefaultGeom or Custom - # Parameter of BLSURF algo # @ingroup l3_hypos_blsurf def SetGeometricMesh(self, theGeometricMesh=0): - if self.params == 0: - self.Parameters() - if self.params.GetPhysicalMesh() == 0: theGeometricMesh = 1 + # Parameter of BLSURF algo + if self.Parameters().GetPhysicalMesh() == 0: theGeometricMesh = 1 self.params.SetGeometricMesh(theGeometricMesh) - ## Sets angular deflection (in degrees) of a mesh face from CAD surface - # Parameter of BLSURF algo + ## Sets angular deflection (in degrees) of a mesh face from CAD surface. # @ingroup l3_hypos_blsurf def SetAngleMeshS(self, theVal=_angleMeshS): - if self.params == 0: - self.Parameters() - if self.params.GetGeometricMesh() == 0: theVal = self._angleMeshS + # Parameter of BLSURF algo + if self.Parameters().GetGeometricMesh() == 0: theVal = self._angleMeshS self.params.SetAngleMeshS(theVal) - ## Sets angular deflection (in degrees) of a mesh edge from CAD curve - # Parameter of BLSURF algo + ## Sets angular deflection (in degrees) of a mesh edge from CAD curve. # @ingroup l3_hypos_blsurf def SetAngleMeshC(self, theVal=_angleMeshS): - if self.params == 0: - self.Parameters() - if self.params.GetGeometricMesh() == 0: theVal = self._angleMeshS + # Parameter of BLSURF algo + if self.Parameters().GetGeometricMesh() == 0: theVal = self._angleMeshS self.params.SetAngleMeshC(theVal) - ## Sets lower boundary of mesh element size computed to respect angular deflection - # Parameter of BLSURF algo + ## Sets lower boundary of mesh element size computed to respect angular deflection. # @ingroup l3_hypos_blsurf def SetGeoMin(self, theVal=-1): - if self.params == 0: - self.Parameters() - self.params.SetGeoMin(theVal) + # Parameter of BLSURF algo + self.Parameters().SetGeoMin(theVal) - ## Sets upper boundary of mesh element size computed to respect angular deflection - # Parameter of BLSURF algo + ## Sets upper boundary of mesh element size computed to respect angular deflection. # @ingroup l3_hypos_blsurf def SetGeoMax(self, theVal=-1): - if self.params == 0: - self.Parameters() - self.params.SetGeoMax(theVal) + # Parameter of BLSURF algo + self.Parameters().SetGeoMax(theVal) - ## Sets maximal allowed ratio between the lengths of two adjacent edges - # Parameter of BLSURF algo + ## Sets maximal allowed ratio between the lengths of two adjacent edges. # @ingroup l3_hypos_blsurf def SetGradation(self, theVal=_gradation): - if self.params == 0: - self.Parameters() - if self.params.GetGeometricMesh() == 0: theVal = self._gradation + # Parameter of BLSURF algo + if self.Parameters().GetGeometricMesh() == 0: theVal = self._gradation self.params.SetGradation(theVal) - ## Sets topology usage way defining how mesh conformity is assured: - # FromCAD, PreProcess or PreProcessPlus - # FromCAD - mesh conformity is assured by conformity of a shape - # PreProcess or PreProcessPlus - by pre-processing a CAD model - # Parameter of BLSURF algo + ## Sets topology usage way. + # @param way defines how mesh conformity is assured
    + #
  • FromCAD - mesh conformity is assured by conformity of a shape
  • + #
  • PreProcess or PreProcessPlus - by pre-processing a CAD model
# @ingroup l3_hypos_blsurf def SetTopology(self, way): - if self.params == 0: - self.Parameters() - self.params.SetTopology(way) + # Parameter of BLSURF algo + self.Parameters().SetTopology(way) - ## To respect geometrical edges or not - # Parameter of BLSURF algo + ## To respect geometrical edges or not. # @ingroup l3_hypos_blsurf def SetDecimesh(self, toIgnoreEdges=False): - if self.params == 0: - self.Parameters() - self.params.SetDecimesh(toIgnoreEdges) + # Parameter of BLSURF algo + self.Parameters().SetDecimesh(toIgnoreEdges) ## Sets verbosity level in the range 0 to 100. - # Parameter of BLSURF algo # @ingroup l3_hypos_blsurf def SetVerbosity(self, level): - if self.params == 0: - self.Parameters() - self.params.SetVerbosity(level) + # Parameter of BLSURF algo + self.Parameters().SetVerbosity(level) - ## Sets advanced option value - # Parameter of BLSURF algo + ## Sets advanced option value. # @ingroup l3_hypos_blsurf - def SetOptionValue(self, optionName, value): - if self.params == 0: - self.Parameters() - self.params.SetOptionValue(optionName,level) + def SetOptionValue(self, optionName, level): + # Parameter of BLSURF algo + self.Parameters().SetOptionValue(optionName,level) - ## Sets QuadAllowed flag - # + ## Sets QuadAllowed flag. # Only for algoType == NETGEN || NETGEN_2D || BLSURF # @ingroup l3_hypos_netgen l3_hypos_blsurf def SetQuadAllowed(self, toAllow=True): @@ -3330,17 +3311,15 @@ class Mesh_Triangle(Mesh_Algorithm): pass pass return - if self.params == 0: - self.Parameters() - if self.params: + if self.Parameters(): self.params.SetQuadAllowed(toAllow) return ## Defines "Netgen 2D Parameters" hypothesis # - # Only for algoType == NETGEN # @ingroup l3_hypos_netgen def Parameters(self): + # Only for algoType == NETGEN if self.params: return self.params if self.algoType == NETGEN: @@ -3365,9 +3344,7 @@ class Mesh_Triangle(Mesh_Algorithm): # Only for algoType == NETGEN # @ingroup l3_hypos_netgen def SetMaxSize(self, theSize): - if self.params == 0: - self.Parameters() - if self.params is not None: + if self.Parameters(): self.params.SetMaxSize(theSize) ## Sets SecondOrder flag @@ -3375,9 +3352,7 @@ class Mesh_Triangle(Mesh_Algorithm): # Only for algoType == NETGEN # @ingroup l3_hypos_netgen def SetSecondOrder(self, theVal): - if self.params == 0: - self.Parameters() - if self.params is not None: + if self.Parameters(): self.params.SetSecondOrder(theVal) ## Sets Optimize flag @@ -3385,9 +3360,7 @@ class Mesh_Triangle(Mesh_Algorithm): # Only for algoType == NETGEN # @ingroup l3_hypos_netgen def SetOptimize(self, theVal): - if self.params == 0: - self.Parameters() - if self.params is not None: + if self.Parameters(): self.params.SetOptimize(theVal) ## Sets Fineness @@ -3397,9 +3370,7 @@ class Mesh_Triangle(Mesh_Algorithm): # Only for algoType == NETGEN # @ingroup l3_hypos_netgen def SetFineness(self, theFineness): - if self.params == 0: - self.Parameters() - if self.params is not None: + if self.Parameters(): self.params.SetFineness(theFineness) ## Sets GrowthRate @@ -3407,9 +3378,7 @@ class Mesh_Triangle(Mesh_Algorithm): # Only for algoType == NETGEN # @ingroup l3_hypos_netgen def SetGrowthRate(self, theRate): - if self.params == 0: - self.Parameters() - if self.params is not None: + if self.Parameters(): self.params.SetGrowthRate(theRate) ## Sets NbSegPerEdge @@ -3417,9 +3386,7 @@ class Mesh_Triangle(Mesh_Algorithm): # Only for algoType == NETGEN # @ingroup l3_hypos_netgen def SetNbSegPerEdge(self, theVal): - if self.params == 0: - self.Parameters() - if self.params is not None: + if self.Parameters(): self.params.SetNbSegPerEdge(theVal) ## Sets NbSegPerRadius @@ -3427,9 +3394,7 @@ class Mesh_Triangle(Mesh_Algorithm): # Only for algoType == NETGEN # @ingroup l3_hypos_netgen def SetNbSegPerRadius(self, theVal): - if self.params == 0: - self.Parameters() - if self.params is not None: + if self.Parameters(): self.params.SetNbSegPerRadius(theVal) pass @@ -3508,6 +3473,8 @@ class Mesh_Tetrahedron(Mesh_Algorithm): ## Defines "Netgen 3D Parameters" hypothesis # @ingroup l3_hypos_netgen def Parameters(self): + if self.params: + return self.params if (self.algoType == FULL_NETGEN): self.params = self.Hypothesis("NETGEN_Parameters", [], "libNETGENEngine.so", UseExisting=0) @@ -3524,25 +3491,19 @@ class Mesh_Tetrahedron(Mesh_Algorithm): # Parameter of FULL_NETGEN # @ingroup l3_hypos_netgen def SetMaxSize(self, theSize): - if self.params == 0: - self.Parameters() - self.params.SetMaxSize(theSize) + self.Parameters().SetMaxSize(theSize) ## Sets SecondOrder flag # Parameter of FULL_NETGEN # @ingroup l3_hypos_netgen def SetSecondOrder(self, theVal): - if self.params == 0: - self.Parameters() - self.params.SetSecondOrder(theVal) + self.Parameters().SetSecondOrder(theVal) ## Sets Optimize flag # Parameter of FULL_NETGEN # @ingroup l3_hypos_netgen def SetOptimize(self, theVal): - if self.params == 0: - self.Parameters() - self.params.SetOptimize(theVal) + self.Parameters().SetOptimize(theVal) ## Sets Fineness # @param theFineness is: @@ -3550,114 +3511,96 @@ class Mesh_Tetrahedron(Mesh_Algorithm): # Parameter of FULL_NETGEN # @ingroup l3_hypos_netgen def SetFineness(self, theFineness): - if self.params == 0: - self.Parameters() - self.params.SetFineness(theFineness) + self.Parameters().SetFineness(theFineness) ## Sets GrowthRate # Parameter of FULL_NETGEN # @ingroup l3_hypos_netgen def SetGrowthRate(self, theRate): - if self.params == 0: - self.Parameters() - self.params.SetGrowthRate(theRate) + self.Parameters().SetGrowthRate(theRate) ## Sets NbSegPerEdge # Parameter of FULL_NETGEN # @ingroup l3_hypos_netgen def SetNbSegPerEdge(self, theVal): - if self.params == 0: - self.Parameters() - self.params.SetNbSegPerEdge(theVal) + self.Parameters().SetNbSegPerEdge(theVal) ## Sets NbSegPerRadius # Parameter of FULL_NETGEN # @ingroup l3_hypos_netgen def SetNbSegPerRadius(self, theVal): - if self.params == 0: - self.Parameters() - self.params.SetNbSegPerRadius(theVal) + self.Parameters().SetNbSegPerRadius(theVal) ## To mesh "holes" in a solid or not. Default is to mesh. - # Parameter of GHS3D # @ingroup l3_hypos_ghs3dh def SetToMeshHoles(self, toMesh): - if self.params == 0: self.Parameters() - self.params.SetToMeshHoles(toMesh) + # Parameter of GHS3D + self.Parameters().SetToMeshHoles(toMesh) ## Set Optimization level: # None_Optimization, Light_Optimization, Medium_Optimization, Strong_Optimization. # Default is Medium_Optimization - # Parameter of GHS3D # @ingroup l3_hypos_ghs3dh def SetOptimizationLevel(self, level): - if self.params == 0: self.Parameters() - self.params.SetOptimizationLevel(level) + # Parameter of GHS3D + self.Parameters().SetOptimizationLevel(level) ## Maximal size of memory to be used by the algorithm (in Megabytes). - # Advanced parameter of GHS3D # @ingroup l3_hypos_ghs3dh def SetMaximumMemory(self, MB): - if self.params == 0: self.Parameters() - self.params.SetMaximumMemory(MB) + # Advanced parameter of GHS3D + self.Parameters().SetMaximumMemory(MB) ## Initial size of memory to be used by the algorithm (in Megabytes) in - # automatic memory adjustment mode - # Advanced parameter of GHS3D + # automatic memory adjustment mode. # @ingroup l3_hypos_ghs3dh def SetInitialMemory(self, MB): - if self.params == 0: self.Parameters() - self.params.SetInitialMemory(MB) + # Advanced parameter of GHS3D + self.Parameters().SetInitialMemory(MB) - ## Path to working directory - # Advanced parameter of GHS3D + ## Path to working directory. # @ingroup l3_hypos_ghs3dh def SetWorkingDirectory(self, path): - if self.params == 0: self.Parameters() - self.params.SetWorkingDirectory(path) + # Advanced parameter of GHS3D + self.Parameters().SetWorkingDirectory(path) - ## To keep working files or remove them. Log file remains in case of errors anyway - # Advanced parameter of GHS3D + ## To keep working files or remove them. Log file remains in case of errors anyway. # @ingroup l3_hypos_ghs3dh def SetKeepFiles(self, toKeep): - if self.params == 0: self.Parameters() - self.params.SetKeepFiles(toKeep) + # Advanced parameter of GHS3D + self.Parameters().SetKeepFiles(toKeep) - ## To set verbose level [0-10] - # 0 - no standard output, - # 2 - prints the data, quality statistics of the skin and final meshes and + ## To set verbose level [0-10].
    + #
  • 0 - no standard output, + #
  • 2 - prints the data, quality statistics of the skin and final meshes and # indicates when the final mesh is being saved. In addition the software # gives indication regarding the CPU time. - # 10 - same as 2 plus the main steps in the computation, quality statistics + #
  • 10 - same as 2 plus the main steps in the computation, quality statistics # histogram of the skin mesh, quality statistics histogram together with - # the characteristics of the final mesh. - # Advanced parameter of GHS3D + # the characteristics of the final mesh.
# @ingroup l3_hypos_ghs3dh def SetVerboseLevel(self, level): - if self.params == 0: self.Parameters() - self.params.SetVerboseLevel(level) + # Advanced parameter of GHS3D + self.Parameters().SetVerboseLevel(level) - ## To create new nodes - # Advanced parameter of GHS3D + ## To create new nodes. # @ingroup l3_hypos_ghs3dh def SetToCreateNewNodes(self, toCreate): - if self.params == 0: self.Parameters() - self.params.SetToCreateNewNodes(toCreate) + # Advanced parameter of GHS3D + self.Parameters().SetToCreateNewNodes(toCreate) ## To use boundary recovery version which tries to create mesh on a very poor - # quality surface mesh - # Advanced parameter of GHS3D + # quality surface mesh. # @ingroup l3_hypos_ghs3dh def SetToUseBoundaryRecoveryVersion(self, toUse): - if self.params == 0: self.Parameters() - self.params.SetToUseBoundaryRecoveryVersion(toUse) + # Advanced parameter of GHS3D + self.Parameters().SetToUseBoundaryRecoveryVersion(toUse) - ## To set hidden/undocumented/advanced options - # Advanced parameter of GHS3D + ## Sets command line option as text. # @ingroup l3_hypos_ghs3dh def SetTextOption(self, option): - if self.params == 0: self.Parameters() - self.params.SetTextOption(option) + # Advanced parameter of GHS3D + self.Parameters().SetTextOption(option) # Public class: Mesh_Hexahedron # ------------------------------ -- 2.39.2