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=03ab4c80168013b54ede6a3d393992ec9185972f;hp=72a5c31c24420448868d0fa324545933fa43cc77;hb=fad0945128baf5e8d6642d9805727269db28c4cd;hpb=b7a7d49664daa32e1befb558280e13ed0bde37c9 diff --git a/src/SMESH_I/SMESH_MeshEditor_i.hxx b/src/SMESH_I/SMESH_MeshEditor_i.hxx index 72a5c31c2..03ab4c801 100644 --- a/src/SMESH_I/SMESH_MeshEditor_i.hxx +++ b/src/SMESH_I/SMESH_MeshEditor_i.hxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2016 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2019 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -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) @@ -317,25 +322,27 @@ public: void RenumberNodes() throw (SALOME::SALOME_Exception); void RenumberElements() throw (SALOME::SALOME_Exception); - SMESH::ListOfGroups* RotationSweepObjects(const SMESH::ListOfIDSources & nodes, - const SMESH::ListOfIDSources & edges, - const SMESH::ListOfIDSources & faces, + SMESH::ListOfGroups* RotationSweepObjects(const SMESH::ListOfIDSources & Nodes, + const SMESH::ListOfIDSources & Edges, + const SMESH::ListOfIDSources & Faces, const SMESH::AxisStruct & Axis, CORBA::Double AngleInRadians, CORBA::Long NbOfSteps, CORBA::Double Tolerance, - CORBA::Boolean toMakeGroups) + CORBA::Boolean ToMakeGroups) throw (SALOME::SALOME_Exception); - SMESH::ListOfGroups* ExtrusionSweepObjects(const SMESH::ListOfIDSources & nodes, - const SMESH::ListOfIDSources & edges, - const SMESH::ListOfIDSources & faces, - const SMESH::DirStruct & stepVector, - CORBA::Long nbOfSteps, - const SMESH::double_array & theScaleFactors, - CORBA::Boolean theLinearVariation, - const SMESH::double_array & theBasePoint, - CORBA::Boolean toMakeGroups) + SMESH::ListOfGroups* ExtrusionSweepObjects(const SMESH::ListOfIDSources & Nodes, + const SMESH::ListOfIDSources & Edges, + const SMESH::ListOfIDSources & Faces, + const SMESH::DirStruct & StepVector, + CORBA::Long NbOfSteps, + CORBA::Boolean ToMakeGroups, + const SMESH::double_array & ScaleFactors, + CORBA::Boolean ScalesVariation, + const SMESH::double_array & BasePoint, + const SMESH::double_array & Angles, + CORBA::Boolean AnglesVariation) throw (SALOME::SALOME_Exception); SMESH::ListOfGroups* ExtrusionByNormal(const SMESH::ListOfIDSources& objects, @@ -355,18 +362,20 @@ public: throw (SALOME::SALOME_Exception); SMESH::ListOfGroups* - ExtrusionAlongPathObjects(const SMESH::ListOfIDSources & nodes, - const SMESH::ListOfIDSources & edges, - const SMESH::ListOfIDSources & faces, + ExtrusionAlongPathObjects(const SMESH::ListOfIDSources & Nodes, + const SMESH::ListOfIDSources & Edges, + const SMESH::ListOfIDSources & Faces, SMESH::SMESH_IDSource_ptr PathMesh, GEOM::GEOM_Object_ptr PathShape, CORBA::Long NodeStart, CORBA::Boolean HasAngles, const SMESH::double_array & Angles, - CORBA::Boolean LinearVariation, + CORBA::Boolean AnglesVariation, CORBA::Boolean HasRefPoint, const SMESH::PointStruct & RefPoint, bool MakeGroups, + const SMESH::double_array & ScaleFactors, + CORBA::Boolean ScalesVariation, SMESH::SMESH_MeshEditor::Extrusion_Error& Error) throw (SALOME::SALOME_Exception); @@ -482,6 +491,7 @@ public: SMESH::SMESH_Mesh_ptr Offset( SMESH::SMESH_IDSource_ptr theObject, CORBA::Double Value, CORBA::Boolean CopyGroups, + CORBA::Boolean CopyElements, const char* MeshName, SMESH::ListOfGroups_out Groups) throw (SALOME::SALOME_Exception); @@ -495,7 +505,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, @@ -505,10 +515,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); @@ -545,6 +557,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. @@ -564,6 +590,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. */ @@ -572,8 +616,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); @@ -892,7 +938,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 constructed 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); @@ -956,8 +1012,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);