X-Git-Url: http://git.salome-platform.org/gitweb/?p=modules%2Fsmesh.git;a=blobdiff_plain;f=src%2FSMESH_I%2FSMESH_MeshEditor_i.hxx;h=d8c46a64f77641695ba48795a25469db84bdcc87;hp=320c002b4dc1fe757046321f904e1ae0932de6c0;hb=64680c27c16f878decc136ec6c38dc9a72f12f3b;hpb=c704eadf0489f1776156b36aea985c18a6915ec2 diff --git a/src/SMESH_I/SMESH_MeshEditor_i.hxx b/src/SMESH_I/SMESH_MeshEditor_i.hxx index 320c002b4..d8c46a64f 100644 --- a/src/SMESH_I/SMESH_MeshEditor_i.hxx +++ b/src/SMESH_I/SMESH_MeshEditor_i.hxx @@ -20,7 +20,7 @@ // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // -// SMESH SMESH_I : idl implementation based on 'SMESH' unit's calsses +// SMESH SMESH_I : idl implementation based on 'SMESH' unit's classes // File : SMESH_MeshEditor_i.hxx // Author : Nicolas REJNERI // Module : SMESH @@ -95,6 +95,11 @@ public: static bool IsTemporaryIDSource( SMESH::SMESH_IDSource_ptr& idSource ); static CORBA::Long* GetTemporaryIDs( SMESH::SMESH_IDSource_ptr& idSource, int& nbIds ); + /*! + * \brief Generates the unique group name + */ + std::string GenerateGroupName(const std::string& thePrefix); + CORBA::Boolean RemoveElements(const SMESH::long_array & IDsOfElements) throw (SALOME::SALOME_Exception); CORBA::Boolean RemoveNodes (const SMESH::long_array & IDsOfNodes) @@ -496,7 +501,7 @@ public: SMESH::array_of_long_array_out GroupsOfNodes, CORBA::Boolean SeparateCornersAndMedium) throw (SALOME::SALOME_Exception); - void FindCoincidentNodesOnPartBut(SMESH::SMESH_IDSource_ptr Object, + void FindCoincidentNodesOnPartBut(const SMESH::ListOfIDSources& Objects, CORBA::Double Tolerance, SMESH::array_of_long_array_out GroupsOfNodes, const SMESH::ListOfIDSources& ExceptSubMeshOrGroups, @@ -506,10 +511,12 @@ public: const SMESH::ListOfIDSources& NodesToKeep, CORBA::Boolean AvoidMakingHoles ) throw (SALOME::SALOME_Exception); - void FindEqualElements(SMESH::SMESH_IDSource_ptr Object, + void FindEqualElements(const SMESH::ListOfIDSources& Objects, + const SMESH::ListOfIDSources& ExceptSubMeshOrGroups, SMESH::array_of_long_array_out GroupsOfElementsID) throw (SALOME::SALOME_Exception); - void MergeElements(const SMESH::array_of_long_array& GroupsOfElementsID) + void MergeElements(const SMESH::array_of_long_array& GroupsOfElementsID, + const SMESH::ListOfIDSources& ElementsToKeep) throw (SALOME::SALOME_Exception); void MergeEqualElements() throw (SALOME::SALOME_Exception); @@ -546,6 +553,20 @@ public: SMESH::ElementType type) throw (SALOME::SALOME_Exception); + /*! + * Project a point to a mesh object. + * Return ID of an element of given type where the given point is projected + * and coordinates of the projection point. + * In the case if nothing found, return -1 and [] + */ + CORBA::Long ProjectPoint(CORBA::Double x, + CORBA::Double y, + CORBA::Double z, + SMESH::ElementType type, + SMESH::SMESH_IDSource_ptr meshObject, + SMESH::double_array_out projecton) + throw (SALOME::SALOME_Exception); + /*! * Return point state in a closed 2D mesh in terms of TopAbs_State enumeration. * TopAbs_UNKNOWN state means that either mesh is wrong or the analysis fails. @@ -565,6 +586,24 @@ public: CORBA::Boolean IsCoherentOrientation2D() throw (SALOME::SALOME_Exception); + /*! + * Partition given 1D elements into groups of contiguous edges. + * A node where number of meeting edges != 2 is a group end. + * An optional startNode is used to orient groups it belongs to. + * \return a list of edge groups and a list of corresponding node groups. + * If a group is closed, the first and last nodes of the group are same. + */ + SMESH::array_of_long_array* Get1DBranches( SMESH::SMESH_IDSource_ptr edges, + CORBA::Long startNode, + SMESH::array_of_long_array_out nodeGroups) + throw (SALOME::SALOME_Exception); + + /*! + * Return sharp edges of faces and non-manifold ones. Optionally adds existing edges. + */ + SMESH::ListOfEdges* FindSharpEdges(CORBA::Double angle, CORBA::Boolean addExisting) + throw (SALOME::SALOME_Exception); + /*! * Returns all or only closed FreeBorder's. */ @@ -573,8 +612,10 @@ public: /*! * Fill with 2D elements a hole defined by a FreeBorder. + * Optionally add new faces to a given group, which is returned */ - void FillHole(const SMESH::FreeBorder& hole) + SMESH::SMESH_Group_ptr FillHole(const SMESH::FreeBorder& hole, + const char* groupName) throw (SALOME::SALOME_Exception); SMESH::CoincidentFreeBorders* FindCoincidentFreeBorders(CORBA::Double tolerance); @@ -893,7 +934,17 @@ public: * be added. */ void MakePolyLine(SMESH::ListOfPolySegments& segments, - const char* groupName) + const char* groupName) + throw (SALOME::SALOME_Exception); + + /*! + * \brief Create a slot of given width around given 1D elements lying on a triangle mesh. + * The slot is consrtucted by cutting faces by cylindrical surfaces made + * around each segment. Segments are expected to be created by MakePolyLine(). + * \return Edges located at the slot boundary + */ + SMESH::ListOfEdges* MakeSlot(SMESH::SMESH_GroupBase_ptr segments, + CORBA::Double width) throw (SALOME::SALOME_Exception); @@ -957,8 +1008,6 @@ public: void dumpGroupsList(SMESH::TPythonDump & theDumpPython, const SMESH::ListOfGroups * theGroupList); - std::string generateGroupName(const std::string& thePrefix); - void prepareIdSource(SMESH::SMESH_IDSource_ptr theObject);