X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=idl%2FSMESH_Mesh.idl;h=0e9d8ceb8abc167faaafe6448e35b4de92ba3d20;hb=3cf3be138c6ff5e722ade670551305763d8d8942;hp=ced9d8898ac654bdf1152c2fed715ae4a9e025df;hpb=0c56d6628661c189823bd1a9cb7ffa645cd2bc4d;p=modules%2Fsmesh.git diff --git a/idl/SMESH_Mesh.idl b/idl/SMESH_Mesh.idl index ced9d8898..0e9d8ceb8 100644 --- a/idl/SMESH_Mesh.idl +++ b/idl/SMESH_Mesh.idl @@ -38,9 +38,9 @@ module SMESH interface SMESH_GroupBase; typedef sequence ListOfGroups; - typedef sequence double_array ; - typedef sequence long_array ; - typedef sequence string_array ; + typedef sequence double_array ; + typedef sequence long_array ; + typedef sequence string_array ; typedef sequence array_of_long_array ; enum log_command @@ -81,6 +81,9 @@ module SMESH struct PointStruct { double x; double y; double z; } ; + + typedef sequence nodes_array; + struct DirStruct { PointStruct PS ; } ; // analog to Occ Direction struct AxisStruct { double x; @@ -121,13 +124,16 @@ module SMESH HYP_MISSING, // algo misses a hypothesis HYP_CONCURENT, // several applicable hypotheses HYP_BAD_PARAMETER,// hypothesis has a bad parameter value + HYP_HIDDEN_ALGO, // an algo is hidden by an upper dim algo generating all-dim elements + HYP_HIDING_ALGO, // an algo hides lower dim algos by generating all-dim elements HYP_UNKNOWN_FATAL,// --- all statuses below should be considered as fatal // for Add/RemoveHypothesis operations HYP_INCOMPATIBLE, // hypothesis does not fit algo HYP_NOTCONFORM, // not conform mesh is produced appling a hypothesis HYP_ALREADY_EXIST,// such hypothesis already exist HYP_BAD_DIM, // bad dimension - HYP_BAD_SUBSHAPE // shape is neither the main one, nor its subshape, nor a group + HYP_BAD_SUBSHAPE, // shape is neither the main one, nor its subshape, nor a group + HYP_BAD_GEOMETRY // geometry mismatches algorithm's expectation }; /*! @@ -177,31 +183,27 @@ module SMESH interface SMESH_MeshEditor; interface SMESH_Mesh : SALOME::GenericObj, SMESH_IDSource { - ///*! - // * Associate a Shape to a Mesh created with NewEmpty - // */ - //boolean SetMesh(in GEOM::GEOM_Object anObject) - // raises (SALOME::SALOME_Exception); + /*! + * Return true if there is a geometry to be meshed + */ + boolean HasShapeToMesh() + raises (SALOME::SALOME_Exception); /*! - * Get the subMesh object associated to a subShape. The subMesh object - * gives access to nodes and elements IDs. - * SubMesh will be used instead of SubShape in a next idl version to - * adress a specific subMesh... + * Get geom shape to mesh. A result sould not be nil. Use HasShapeToMesh() + * to know if a returned shape */ - SMESH_subMesh GetSubMesh(in GEOM::GEOM_Object aSubObject, in string name) + GEOM::GEOM_Object GetShapeToMesh() raises (SALOME::SALOME_Exception); - ///*! - // * Create a subMesh without reference to a subShape - // */ - //SMESH_subMesh NewEmpty() - // raises (SALOME::SALOME_Exception); /*! - * Get geom shape to mesh. A result may be nil + * Get the subMesh object associated to a subShape. The subMesh object + * gives access to nodes and elements IDs. + * SubMesh will be used instead of SubShape in a next idl version to + * adress a specific subMesh... */ - GEOM::GEOM_Object GetShapeToMesh() + SMESH_subMesh GetSubMesh(in GEOM::GEOM_Object aSubObject, in string name) raises (SALOME::SALOME_Exception); /*! @@ -210,6 +212,7 @@ module SMESH void RemoveSubMesh(in SMESH_subMesh aSubMesh) raises (SALOME::SALOME_Exception); + /*! * Create a group */ @@ -348,6 +351,13 @@ module SMESH SMESH_MeshEditor GetMeshEditor() raises (SALOME::SALOME_Exception); + /*! + * Return SMESH_MeshEditor that would not modify the mesh but + * fill MeshPreviewStruct + */ + SMESH_MeshEditor GetMeshEditPreviewer() + raises (SALOME::SALOME_Exception); + /*! Check group names for duplications. * Consider maximum group name length stored in MED file. */ @@ -493,7 +503,7 @@ module SMESH /*! * Get mesh pointer */ - long GetMeshPtr(); + long long GetMeshPtr(); /*! * Get XYZ coordinates of node as list of double @@ -526,6 +536,11 @@ module SMESH */ long GetElemNbNodes(in long id); + /*! + * Returns IDs of nodes of given element + */ + long_array GetElemNodes(in long id); + /*! * Returns ID of node by given index for given element * If there is not element for given ID - returns -1 @@ -636,348 +651,6 @@ module SMESH raises (SALOME::SALOME_Exception); }; - /*! - * This interface makes modifications on the Mesh - removing elements and nodes etc. - */ - interface NumericalFunctor; - interface SMESH_MeshEditor - { - boolean RemoveElements(in long_array IDsOfElements); - - boolean RemoveNodes(in long_array IDsOfNodes); - - long AddNode(in double x, in double y, in double z); - - /*! - * Create edge both similar and quadratic (this is determed - * by number of given nodes). - * \param IdsOfNodes List of node IDs for creation of element. - * Needed order of nodes in this list corresponds to description - * of MED. This description is located by the following link: - * http://www.salome-platform.org/salome2/web_med_internet/logiciels/medV2.2.2_doc_html/html/modele_de_donnees.html#3. - */ - long AddEdge(in long_array IDsOfNodes); - - /*! - * Create face both similar and quadratic (this is determed - * by number of given nodes). - * \param IdsOfNodes List of node IDs for creation of element. - * Needed order of nodes in this list corresponds to description - * of MED. This description is located by the following link: - * http://www.salome-platform.org/salome2/web_med_internet/logiciels/medV2.2.2_doc_html/html/modele_de_donnees.html#3. - */ - long AddFace(in long_array IDsOfNodes); - - long AddPolygonalFace(in long_array IdsOfNodes); - - /*! - * Create volume both similar and quadratic (this is determed - * by number of given nodes). - * \param IdsOfNodes List of node IDs for creation of element. - * Needed order of nodes in this list corresponds to description - * of MED. This description is located by the following link: - * http://www.salome-platform.org/salome2/web_med_internet/logiciels/medV2.2.2_doc_html/html/modele_de_donnees.html#3. - */ - long AddVolume(in long_array IDsOfNodes); - - /*! - * Create volume of many faces, giving nodes for each face. - * \param IdsOfNodes List of node IDs for volume creation face by face. - * \param Quantities List of integer values, Quantities[i] - * gives quantity of nodes in face number i. - */ - long AddPolyhedralVolume (in long_array IdsOfNodes, - in long_array Quantities); - - /*! - * Create volume of many faces, giving IDs of existing faces. - * \param IdsOfFaces List of face IDs for volume creation. - * \note The created volume will refer only to nodes - * of the given faces, not to the faces itself. - */ - long AddPolyhedralVolumeByFaces (in long_array IdsOfFaces); - - boolean MoveNode(in long NodeID, in double x, in double y, in double z); - - boolean InverseDiag(in long NodeID1, in long NodeID2); - - boolean DeleteDiag(in long NodeID1, in long NodeID2); - - boolean Reorient(in long_array IDsOfElements); - - boolean ReorientObject(in SMESH_IDSource theObject); - - /*! - * \brief Fuse neighbour triangles into quadrangles. - * \param theElems The triangles to be fused. - * \param theCriterion Is used to choose a neighbour to fuse with. - * \param theMaxAngle Is a max angle between element normals at which fusion - * is still performed; theMaxAngle is mesured in radians. - * \return TRUE in case of success, FALSE otherwise. - */ - boolean TriToQuad (in long_array IDsOfElements, - in NumericalFunctor Criterion, - in double MaxAngle); - - /*! - * \brief Fuse neighbour triangles into quadrangles. - * - * Behaves like the above method, taking list of elements from \a theObject - */ - boolean TriToQuadObject (in SMESH_IDSource theObject, - in NumericalFunctor Criterion, - in double MaxAngle); - - /*! - * \brief Split quadrangles into triangles. - * \param theElems The faces to be splitted. - * \param theCriterion Is used to choose a diagonal for splitting. - * \return TRUE in case of success, FALSE otherwise. - */ - boolean QuadToTri (in long_array IDsOfElements, - in NumericalFunctor Criterion); - - /*! - * \brief Split quadrangles into triangles. - * - * Behaves like the above method, taking list of elements from \a theObject - */ - boolean QuadToTriObject (in SMESH_IDSource theObject, - in NumericalFunctor Criterion); - - /*! - * \brief Split quadrangles into triangles. - * \param theElems The faces to be splitted. - * \param the13Diag Is used to choose a diagonal for splitting. - * \return TRUE in case of success, FALSE otherwise. - */ - boolean SplitQuad (in long_array IDsOfElements, - in boolean Diag13); - - /*! - * \brief Split quadrangles into triangles. - * - * Behaves like the above method, taking list of elements from \a theObject - */ - boolean SplitQuadObject (in SMESH_IDSource theObject, - in boolean Diag13); - - /*! - * Find better splitting of the given quadrangle. - * \param IDOfQuad ID of the quadrangle to be splitted. - * \param Criterion A criterion to choose a diagonal for splitting. - * \return 1 if 1-3 diagonal is better, 2 if 2-4 - * diagonal is better, 0 if error occurs. - */ - long BestSplit (in long IDOfQuad, - in NumericalFunctor Criterion); - - enum Smooth_Method { LAPLACIAN_SMOOTH, CENTROIDAL_SMOOTH }; - - boolean Smooth(in long_array IDsOfElements, - in long_array IDsOfFixedNodes, - in long MaxNbOfIterations, - in double MaxAspectRatio, - in Smooth_Method Method); - - boolean SmoothObject(in SMESH_IDSource theObject, - in long_array IDsOfFixedNodes, - in long MaxNbOfIterations, - in double MaxAspectRatio, - in Smooth_Method Method); - - boolean SmoothParametric(in long_array IDsOfElements, - in long_array IDsOfFixedNodes, - in long MaxNbOfIterations, - in double MaxAspectRatio, - in Smooth_Method Method); - - boolean SmoothParametricObject(in SMESH_IDSource theObject, - in long_array IDsOfFixedNodes, - in long MaxNbOfIterations, - in double MaxAspectRatio, - in Smooth_Method Method); - - void ConvertToQuadratic(in boolean theForce3d); - - boolean ConvertFromQuadratic(); - - void RenumberNodes(); - - void RenumberElements(); - - void RotationSweep(in long_array IDsOfElements, - in AxisStruct Axix, - in double AngleInRadians, - in long NbOfSteps, - in double Tolerance); - - void RotationSweepObject(in SMESH_IDSource theObject, - in AxisStruct Axix, - in double AngleInRadians, - in long NbOfSteps, - in double Tolerance); - - void ExtrusionSweep(in long_array IDsOfElements, - in DirStruct StepVector, - in long NbOfSteps); - - /*! - * Generate new elements by extrusion of theElements - * by StepVector by NbOfSteps - * param ExtrFlags set flags for performing extrusion - * param SewTolerance - uses for comparing locations of nodes if flag - * EXTRUSION_FLAG_SEW is set - */ - void AdvancedExtrusion(in long_array IDsOfElements, - in DirStruct StepVector, - in long NbOfSteps, - in long ExtrFlags, - in double SewTolerance); - - void ExtrusionSweepObject(in SMESH_IDSource theObject, - in DirStruct StepVector, - in long NbOfSteps); - - void ExtrusionSweepObject1D(in SMESH_IDSource theObject, - in DirStruct StepVector, - in long NbOfSteps); - - void ExtrusionSweepObject2D(in SMESH_IDSource theObject, - in DirStruct StepVector, - in long NbOfSteps); - - enum Extrusion_Error { - EXTR_OK, - EXTR_NO_ELEMENTS, - EXTR_PATH_NOT_EDGE, - EXTR_BAD_PATH_SHAPE, - EXTR_BAD_STARTING_NODE, - EXTR_BAD_ANGLES_NUMBER, - EXTR_CANT_GET_TANGENT - }; - - Extrusion_Error ExtrusionAlongPath(in long_array IDsOfElements, - in SMESH_Mesh PathMesh, - in GEOM::GEOM_Object PathShape, - in long NodeStart, - in boolean HasAngles, - in double_array Angles, - in boolean HasRefPoint, - in PointStruct RefPoint); - - Extrusion_Error ExtrusionAlongPathObject(in SMESH_IDSource theObject, - in SMESH_Mesh PathMesh, - in GEOM::GEOM_Object PathShape, - in long NodeStart, - in boolean HasAngles, - in double_array Angles, - in boolean HasRefPoint, - in PointStruct RefPoint); - - enum MirrorType { POINT, AXIS, PLANE }; - - void Mirror (in long_array IDsOfElements, - in AxisStruct Mirror, - in MirrorType theMirrorType, - in boolean Copy); - - void MirrorObject (in SMESH_IDSource theObject, - in AxisStruct Mirror, - in MirrorType theMirrorType, - in boolean Copy); - - void Translate (in long_array IDsOfElements, - in DirStruct Vector, - in boolean Copy); - - void TranslateObject (in SMESH_IDSource theObject, - in DirStruct Vector, - in boolean Copy); - - void Rotate (in long_array IDsOfElements, - in AxisStruct Axis, - in double AngleInRadians, - in boolean Copy); - - void RotateObject (in SMESH_IDSource theObject, - in AxisStruct Axis, - in double AngleInRadians, - in boolean Copy); - - void FindCoincidentNodes (in double Tolerance, - out array_of_long_array GroupsOfNodes); - - void MergeNodes (in array_of_long_array GroupsOfNodes); - - void MergeEqualElements(); - - enum Sew_Error { - SEW_OK, - SEW_BORDER1_NOT_FOUND, - SEW_BORDER2_NOT_FOUND, - SEW_BOTH_BORDERS_NOT_FOUND, - SEW_BAD_SIDE_NODES, - SEW_VOLUMES_TO_SPLIT, - // for SewSideElements() only: - SEW_DIFF_NB_OF_ELEMENTS, - SEW_TOPO_DIFF_SETS_OF_ELEMENTS, - SEW_BAD_SIDE1_NODES, - SEW_BAD_SIDE2_NODES - }; - - Sew_Error SewFreeBorders (in long FirstNodeID1, - in long SecondNodeID1, - in long LastNodeID1, - in long FirstNodeID2, - in long SecondNodeID2, - in long LastNodeID2, - in boolean CreatePolygons, - in boolean CreatePolyedrs); - - Sew_Error SewConformFreeBorders (in long FirstNodeID1, - in long SecondNodeID1, - in long LastNodeID1, - in long FirstNodeID2, - in long SecondNodeID2); - - Sew_Error SewBorderToSide (in long FirstNodeIDOnFreeBorder, - in long SecondNodeIDOnFreeBorder, - in long LastNodeIDOnFreeBorder, - in long FirstNodeIDOnSide, - in long LastNodeIDOnSide, - in boolean CreatePolygons, - in boolean CreatePolyedrs); - - Sew_Error SewSideElements (in long_array IDsOfSide1Elements, - in long_array IDsOfSide2Elements, - in long NodeID1OfSide1ToMerge, - in long NodeID1OfSide2ToMerge, - in long NodeID2OfSide1ToMerge, - in long NodeID2OfSide2ToMerge); - - /*! - * Set new nodes for given element. - * If number of nodes is not corresponded to type of - * element - returns false - */ - boolean ChangeElemNodes(in long ide, in long_array newIDs); - - /*! - * If during last operation of MeshEditor some nodes were - * created this method returns list of it's IDs, if new nodes - * not creared - returns empty list - */ - long_array GetLastCreatedNodes(); - - /*! - * If during last operation of MeshEditor some elements were - * created this method returns list of it's IDs, if new elements - * not creared - returns empty list - */ - long_array GetLastCreatedElems(); - - }; }; #endif