+ CORBA::Boolean CreateFlatElementsOnFacesGroups( const SMESH::ListOfGroups& theGroupsOfFaces )
+ throw (SALOME::SALOME_Exception);
+
+ /*!
+ * \brief identify all the elements around a geom shape, get the faces delimiting the hole
+ * Build groups of volume to remove, groups of faces to replace on the skin of the object,
+ * groups of faces to remove insidethe object, (idem edges).
+ * Build ordered list of nodes at the border of each group of faces to replace (to be used to build a geom subshape)
+ */
+ void CreateHoleSkin(CORBA::Double radius,
+ GEOM::GEOM_Object_ptr theShape,
+ const char* groupName,
+ const SMESH::double_array& theNodesCoords,
+ SMESH::array_of_long_array_out GroupsOfNodes)
+ throw (SALOME::SALOME_Exception);
+
+ /*!
+ * \brief Generated skin mesh (containing 2D cells) from 3D mesh
+ * The created 2D mesh elements based on nodes of free faces of boundary volumes
+ * \return TRUE if operation has been completed successfully, FALSE otherwise
+ */
+ CORBA::Boolean Make2DMeshFrom3D()
+ throw (SALOME::SALOME_Exception);
+
+ SMESH::SMESH_Mesh_ptr MakeBoundaryMesh(SMESH::SMESH_IDSource_ptr elements,
+ SMESH::Bnd_Dimension dimension,
+ const char* groupName,
+ const char* meshName,
+ CORBA::Boolean toCopyElements,
+ CORBA::Boolean toCopyMissingBondary,
+ SMESH::SMESH_Group_out group)
+ throw (SALOME::SALOME_Exception);
+
+ CORBA::Long MakeBoundaryElements(SMESH::Bnd_Dimension dimension,
+ const char* groupName,
+ const char* meshName,
+ CORBA::Boolean toCopyAll,
+ const SMESH::ListOfIDSources& groups,
+ SMESH::SMESH_Mesh_out mesh,
+ SMESH::SMESH_Group_out group)
+ throw (SALOME::SALOME_Exception);
+
+private: //!< private methods
+
+ ::SMESH_MeshEditor& getEditor();
+
+ SMESHDS_Mesh * getMeshDS() { return myMesh->GetMeshDS(); }
+
+ MeshEditor_I::TPreviewMesh * getPreviewMesh( SMDSAbs_ElementType previewType = SMDSAbs_All );
+
+ void declareMeshModified( bool isReComputeSafe );
+
+ /*!
+ * \brief Clear myLastCreated* or myPreviewData
+ */
+ void initData(bool deleteSearchers=true);
+
+ /*!
+ * \brief Return groups by their IDs
+ */
+ SMESH::ListOfGroups* getGroups(const std::list<int>* groupIDs)
+ throw (SALOME::SALOME_Exception);
+
+ SMESH::ListOfGroups* mirror(TIDSortedElemSet & IDsOfElements,
+ const SMESH::AxisStruct & Axis,
+ SMESH::SMESH_MeshEditor::MirrorType MirrorType,
+ CORBA::Boolean Copy,
+ bool MakeGroups,
+ ::SMESH_Mesh* TargetMesh=0)
+ throw (SALOME::SALOME_Exception);
+ SMESH::ListOfGroups* translate(TIDSortedElemSet & IDsOfElements,
+ const SMESH::DirStruct & Vector,
+ CORBA::Boolean Copy,
+ bool MakeGroups,
+ ::SMESH_Mesh* TargetMesh=0)
+ throw (SALOME::SALOME_Exception);
+ SMESH::ListOfGroups* rotate(TIDSortedElemSet & IDsOfElements,
+ const SMESH::AxisStruct & Axis,
+ CORBA::Double Angle,
+ CORBA::Boolean Copy,
+ bool MakeGroups,
+ ::SMESH_Mesh* TargetMesh=0)
+ throw (SALOME::SALOME_Exception);
+
+ SMESH::ListOfGroups* scale(SMESH::SMESH_IDSource_ptr theObject,
+ const SMESH::PointStruct& thePoint,
+ const SMESH::double_array& theScaleFact,
+ CORBA::Boolean theCopy,
+ bool theMakeGroups,
+ ::SMESH_Mesh* theTargetMesh=0)
+ throw (SALOME::SALOME_Exception);
+
+ void convertToQuadratic(CORBA::Boolean theForce3d,
+ CORBA::Boolean theToBiQuad,
+ SMESH::SMESH_IDSource_ptr theObject = SMESH::SMESH_IDSource::_nil())
+ throw (SALOME::SALOME_Exception);
+
+ SMESH::SMESH_Mesh_ptr makeMesh(const char* theMeshName);
+
+ void dumpGroupsList(SMESH::TPythonDump & theDumpPython,
+ const SMESH::ListOfGroups * theGroupList);
+
+ std::string generateGroupName(const std::string& thePrefix);
+
+ void prepareIdSource(SMESH::SMESH_IDSource_ptr theObject);
+
+
+ enum IDSource_Error { IDSource_OK, IDSource_INVALID, IDSource_EMPTY };
+
+ bool idSourceToSet(SMESH::SMESH_IDSource_ptr theIDSource,
+ const SMESHDS_Mesh* theMeshDS,
+ TIDSortedElemSet& theElemSet,
+ const SMDSAbs_ElementType theType,
+ const bool emptyIfIsMesh = false,
+ IDSource_Error* error = 0);
+
+ void findCoincidentNodes( TIDSortedNodeSet & Nodes,
+ CORBA::Double Tolerance,
+ SMESH::array_of_long_array_out GroupsOfNodes,
+ CORBA::Boolean SeparateCornersAndMedium);
+
+
+
+ private: //!< fields
+
+ SMESH_Mesh_i* myMesh_i;
+ SMESH_Mesh * myMesh;
+ ::SMESH_MeshEditor myEditor;
+
+ bool myIsPreviewMode;
+ MeshEditor_I::TPreviewMesh * myPreviewMesh;
+ ::SMESH_MeshEditor * myPreviewEditor;
+ SMESH::MeshPreviewStruct_var myPreviewData;