X-Git-Url: http://git.salome-platform.org/gitweb/?p=modules%2Fsmesh.git;a=blobdiff_plain;f=idl%2FSMESH_Mesh.idl;h=e380a6a099d8a23404af36365190aa1778d8e7b2;hp=b81acf6a06e1dfc2d6bb751b97480affa4547a75;hb=7411bcf53c885c39859a769c4adbc2a256448d75;hpb=c3bf92bd87b770fd81631a3853f7f5bb1ac6a4e8 diff --git a/idl/SMESH_Mesh.idl b/idl/SMESH_Mesh.idl index b81acf6a0..e380a6a09 100644 --- a/idl/SMESH_Mesh.idl +++ b/idl/SMESH_Mesh.idl @@ -27,15 +27,11 @@ #define _SMESH_MESH_IDL_ #include "SALOME_Exception.idl" -//#include "SMESH_Hypothesis.idl" - #include "SALOME_GenericObj.idl" -//#include "GEOM_Shape.idl" -//#include "MED.idl" module GEOM { - interface GEOM_Shape; + interface GEOM_Object; }; @@ -54,6 +50,7 @@ module SMESH typedef sequence double_array ; typedef sequence long_array ; typedef sequence string_array ; + typedef sequence array_of_long_array ; enum log_command { @@ -66,7 +63,10 @@ module SMESH ADD_PRISM, ADD_HEXAHEDRON, REMOVE_NODE, - REMOVE_ELEMENT + REMOVE_ELEMENT, + MOVE_NODE, + CHANGE_ELEMENT_NODES, + RENUMBER }; struct log_block @@ -77,6 +77,18 @@ module SMESH long_array indexes; }; + struct PointStruct { double x; + double y; + double z; } ; + struct DirStruct { PointStruct PS ; } ; // analog to Occ Direction + + struct AxisStruct { double x; + double y; + double z; + double vx; + double vy; + double vz; } ; + /*! * Enumeration for element type, like in SMDS @@ -120,18 +132,38 @@ module SMESH DRS_FAIL // general failure (exception etc.) }; + /*! + * Enumeration for DriverMED (used by Perform() method) + */ + enum MED_VERSION // in the order of severity + { + MED_V2_1, + MED_V2_2 + }; + typedef sequence log_array; + + interface SMESH_IDSource + { + /*! + * Returns a sequence of all element IDs + */ + long_array GetIDs(); + }; + + interface SMESH_GroupBase; interface SMESH_Group; + interface SMESH_GroupOnGeom; interface SMESH_subMesh; interface SMESH_MeshEditor; - interface SMESH_Mesh : SALOME::GenericObj + interface SMESH_Mesh : SALOME::GenericObj, SMESH_IDSource { /*! * Associate a Shape to a Mesh created with NewEmpty */ -// boolean SetMesh(in GEOM::GEOM_Shape aShape) +// boolean SetMesh(in GEOM::GEOM_Object anObject) // raises (SALOME::SALOME_Exception); /*! @@ -140,7 +172,7 @@ module SMESH * SubMesh will be used instead of SubShape in a next idl version to * adress a specific subMesh... */ - SMESH_subMesh GetSubMesh(in GEOM::GEOM_Shape aSubShape, in string name) + SMESH_subMesh GetSubMesh(in GEOM::GEOM_Object aSubObject, in string name) raises (SALOME::SALOME_Exception); /*! @@ -149,6 +181,12 @@ module SMESH // SMESH_subMesh NewEmpty() // raises (SALOME::SALOME_Exception); + /*! + * Get geom shape to mesh. A result may be nil + */ + GEOM::GEOM_Object GetShapeToMesh() + raises (SALOME::SALOME_Exception); + /*! * Remove a submesh */ @@ -162,12 +200,56 @@ module SMESH in string name ) raises (SALOME::SALOME_Exception); + /*! + * Create a group from geometry group + */ + SMESH_GroupOnGeom CreateGroupFromGEOM( in ElementType elem_type, + in string name, + in GEOM::GEOM_Object theGeomObject ) + raises (SALOME::SALOME_Exception); + /*! * Remove a group */ - void RemoveGroup(in SMESH_Group aGroup) + void RemoveGroup(in SMESH_GroupBase aGroup) raises (SALOME::SALOME_Exception); + /*! + * Remove group with its contents + */ + void RemoveGroupWithContents( in SMESH_GroupBase aGroup ) + raises (SALOME::SALOME_Exception); + + /*! + * Union of two groups + * New group is created. All mesh elements that are + * present in initial groups are added to the new one + */ + SMESH_Group UnionGroups (in SMESH_GroupBase aGroup1, + in SMESH_GroupBase aGroup2, + in string name ) + raises (SALOME::SALOME_Exception); + + /*! + * Intersection of two groups + * New group is created. All mesh elements that are + * present in both initial groups are added to the new one. + */ + SMESH_Group IntersectGroups (in SMESH_GroupBase aGroup1, + in SMESH_GroupBase aGroup2, + in string name ) + raises (SALOME::SALOME_Exception); + + /*! + * Cut of two groups + * New group is created. All mesh elements that are present in + * main group but do not present in tool group are added to the new one + */ + SMESH_Group CutGroups (in SMESH_GroupBase aMainGroup, + in SMESH_GroupBase aToolGroup, + in string name ) + raises (SALOME::SALOME_Exception); + /*! * Add hypothesis to the mesh, under a particular subShape * (or the main shape itself) @@ -185,7 +267,7 @@ module SMESH * (or one previous hypothesis on the subShape) * raises exception if hypothesis has not been created */ - Hypothesis_Status AddHypothesis(in GEOM::GEOM_Shape aSubShape, + Hypothesis_Status AddHypothesis(in GEOM::GEOM_Object aSubObject, in SMESH_Hypothesis anHyp) raises (SALOME::SALOME_Exception); // boolean AddHypothesis(in SMESH_subMesh aSubMesh, in SMESH_Hypothesis anHyp) @@ -195,7 +277,7 @@ module SMESH /*! * Remove an hypothesis previouly added with AddHypothesis. */ - Hypothesis_Status RemoveHypothesis(in GEOM::GEOM_Shape aSubShape, + Hypothesis_Status RemoveHypothesis(in GEOM::GEOM_Object aSubObject, in SMESH_Hypothesis anHyp) raises (SALOME::SALOME_Exception); // boolean RemoveHypothesis(in SMESH_subMesh aSubMesh, @@ -205,7 +287,7 @@ module SMESH /*! * Get the list of hypothesis added on a subShape */ - ListOfHypothesis GetHypothesisList(in GEOM::GEOM_Shape aSubShape) + ListOfHypothesis GetHypothesisList(in GEOM::GEOM_Object aSubObject) raises (SALOME::SALOME_Exception); // ListOfHypothesis GetHypothesisList(in SMESH_subMesh aSubMesh) // raises (SALOME::SALOME_Exception); @@ -242,14 +324,32 @@ module SMESH raises (SALOME::SALOME_Exception); /*! - * Export Mesh with DAT and MED Formats + * Export Mesh to different MED Formats + * @params + * - auto_groups : boolean parameter for creating/not creating + * the groups Group_On_All_Nodes, Group_On_All_Faces, ... ; + * the typical use is auto_groups=false. + * - theVersion : define the version of format of MED file, that will be created */ - void ExportDAT( in string file ) + void ExportToMED( in string file, in boolean auto_groups, in MED_VERSION theVersion ) raises (SALOME::SALOME_Exception); + /*! + * Export Mesh to MED_V2_1 MED format + * Works, just the same as ExportToMED, with MED_VERSION parameter equal to MED_V2_1. + * The method is kept in order to support old functionality + */ void ExportMED( in string file, in boolean auto_groups ) raises (SALOME::SALOME_Exception); + + /*! + * Export Mesh to DAT, UNV and STL Formats + */ + void ExportDAT( in string file ) + raises (SALOME::SALOME_Exception); void ExportUNV( in string file ) raises (SALOME::SALOME_Exception); + void ExportSTL( in string file, in boolean isascii ) + raises (SALOME::SALOME_Exception); /*! * Get MED Mesh @@ -260,6 +360,9 @@ module SMESH long NbNodes() raises (SALOME::SALOME_Exception); + long NbElements() + raises (SALOME::SALOME_Exception); + long NbEdges() raises (SALOME::SALOME_Exception); @@ -290,10 +393,19 @@ module SMESH long NbSubMesh() raises (SALOME::SALOME_Exception); + long_array GetElementsId() + raises (SALOME::SALOME_Exception); + + long_array GetElementsByType( in ElementType theType ) + raises (SALOME::SALOME_Exception); + + long_array GetNodesId() + raises (SALOME::SALOME_Exception); + string Dump(); }; - interface SMESH_subMesh : SALOME::GenericObj + interface SMESH_subMesh : SALOME::GenericObj, SMESH_IDSource { /*! * @@ -304,7 +416,7 @@ module SMESH /*! * */ - long GetNumberOfNodes() + long GetNumberOfNodes( in boolean all ) raises (SALOME::SALOME_Exception); /*! @@ -325,6 +437,12 @@ module SMESH long_array GetNodesId() raises (SALOME::SALOME_Exception); + /*! + * Get geom shape the submesh is dedicated to + */ + GEOM::GEOM_Object GetSubShape() + raises (SALOME::SALOME_Exception); + /*! * Get SMESH_Mesh which stores nodes coordinates & elements definition */ @@ -344,28 +462,202 @@ module SMESH }; /* - * This interface makes modifications on the Mesh - removing elements and nodes - */ + * This interface makes modifications on the Mesh - removing elements and nodes etc. + */ + interface NumericalFunctor; interface SMESH_MeshEditor { - boolean RemoveElements(in long_array IDsOfElements) - raises (SALOME::SALOME_Exception); + boolean RemoveElements(in long_array IDsOfElements); - boolean RemoveNodes(in long_array IDsOfNodes) - raises (SALOME::SALOME_Exception); + boolean RemoveNodes(in long_array IDsOfNodes); - boolean AddNode(in double x, in double y, in double z) - raises (SALOME::SALOME_Exception); + boolean AddNode(in double x, in double y, in double z); - boolean AddEdge(in long_array IDsOfNodes) - raises (SALOME::SALOME_Exception); + boolean AddEdge(in long_array IDsOfNodes); - boolean AddFace(in long_array IDsOfNodes) - raises (SALOME::SALOME_Exception); + boolean AddFace(in long_array IDsOfNodes); + + boolean AddVolume(in long_array IDsOfNodes); + + 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); + + boolean TriToQuad(in long_array IDsOfElements, + in NumericalFunctor Criterion, + in double MaxAngle); + + boolean TriToQuadObject(in SMESH_IDSource theObject, + in NumericalFunctor Criterion, + in double MaxAngle); + + boolean QuadToTri(in long_array IDsOfElements, + in NumericalFunctor Criterion); + + boolean SplitQuad(in long_array IDsOfElements, + in boolean Diag13); + + boolean SplitQuadObject(in SMESH_IDSource theObject, + in boolean Diag13); + + 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); + + 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); + + 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); + + 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); + + Sew_Error SewSideElements (in long_array IDsOfSide1Elements, + in long_array IDsOfSide2Elements, + in long NodeID1OfSide1ToMerge, + in long NodeID1OfSide2ToMerge, + in long NodeID2OfSide1ToMerge, + in long NodeID2OfSide2ToMerge); - boolean AddVolume(in long_array IDsOfNodes) - raises (SALOME::SALOME_Exception); }; };