X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=idl%2FSMESH_Mesh.idl;h=f789e5e12c2d56f9ff18a6fe2558d76c4d703821;hb=refs%2Ftags%2FOCC-V2_1_0c;hp=a25ba26bc82f01fa78439a63a0c2e5b3410f635b;hpb=bef9beee88cac57394b8dc3bc914381c1a2fff83;p=modules%2Fsmesh.git diff --git a/idl/SMESH_Mesh.idl b/idl/SMESH_Mesh.idl index a25ba26bc..f789e5e12 100644 --- a/idl/SMESH_Mesh.idl +++ b/idl/SMESH_Mesh.idl @@ -1,27 +1,56 @@ -//============================================================================= -// File : SMESH_Mesh.idl -// Created : jeu avr 11 15:31:39 CEST 2002 -// Author : Paul RASCLE, EDF -// Project : SALOME -// Copyright : EDF 2002 -// $Header$ -//============================================================================= - +// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, +// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org +// +// +// +// File : SMESH_Mesh.idl +// Author : Paul RASCLE, EDF +// $Header$ #ifndef _SMESH_MESH_IDL_ #define _SMESH_MESH_IDL_ #include "SALOME_Exception.idl" -#include "SMESH_Hypothesis.idl" +#include "SALOME_GenericObj.idl" + +module GEOM +{ + interface GEOM_Object; +}; + + +module SALOME_MED +{ + interface MESH; + interface FAMILY; +}; -#include "GEOM_Shape.idl" -#include "MED.idl" module SMESH { + interface SMESH_Hypothesis; + typedef sequence ListOfHypothesis; + typedef sequence double_array ; typedef sequence long_array ; typedef sequence string_array ; + typedef sequence array_of_long_array ; enum log_command { @@ -34,7 +63,10 @@ module SMESH ADD_PRISM, ADD_HEXAHEDRON, REMOVE_NODE, - REMOVE_ELEMENT + REMOVE_ELEMENT, + MOVE_NODE, + CHANGE_ELEMENT_NODES, + RENUMBER }; struct log_block @@ -44,18 +76,74 @@ module SMESH double_array coords; 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 + */ + enum ElementType + { + ALL, + NODE, + EDGE, + FACE, + VOLUME + }; + + /*! + * Enumeration for hypothesis status (used by AddHypothesis() and RemoveHypothesis() methods) + */ + enum Hypothesis_Status // in the order of severity + { + HYP_OK, + HYP_MISSING, // algo misses a hypothesis + HYP_CONCURENT, // several applicable hypotheses + HYP_BAD_PARAMETER,// hypothesis has a bad parameter value + 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 + }; + + /*! + * Enumeration for DriverMED read status (used by ImportMEDFile() method) + */ + enum DriverMED_ReadStatus // in the order of severity + { + DRS_OK, + DRS_EMPTY, // a MED file contains no mesh with the given name + DRS_WARN_RENUMBER, // a MED file has overlapped ranges of element numbers, + // so the numbers from the file are ignored + DRS_WARN_SKIP_ELEM, // some elements were skipped due to incorrect file data + DRS_FAIL // general failure (exception etc.) + }; + typedef sequence log_array; + interface SMESH_Group; interface SMESH_subMesh; interface SMESH_MeshEditor; - interface SMESH_Mesh + interface SMESH_Mesh : SALOME::GenericObj { /*! * 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); /*! @@ -64,7 +152,7 @@ module SMESH * SubMesh will be used instead of SubShape in a next idl version to * adress a specific subMesh... */ - SMESH_subMesh GetElementsOnShape(in GEOM::GEOM_Shape aSubShape) + SMESH_subMesh GetSubMesh(in GEOM::GEOM_Object aSubObject, in string name) raises (SALOME::SALOME_Exception); /*! @@ -73,6 +161,63 @@ module SMESH // SMESH_subMesh NewEmpty() // raises (SALOME::SALOME_Exception); + /*! + * Remove a submesh + */ + void RemoveSubMesh(in SMESH_subMesh aSubMesh) + raises (SALOME::SALOME_Exception); + + /*! + * Create a group + */ + SMESH_Group CreateGroup( in ElementType elem_type, + in string name ) + raises (SALOME::SALOME_Exception); + + /*! + * Create a group from geometry group + */ + SMESH_Group CreateGroupFromGEOM( in ElementType elem_type, + in string name, + in GEOM::GEOM_Object theGEOMGroup ) + raises (SALOME::SALOME_Exception); + + /*! + * Remove a group + */ + void RemoveGroup(in SMESH_Group aGroup) + raises (SALOME::SALOME_Exception); + + /*! + * Remove group with its contents + */ + void RemoveGroupWithContents( in SMESH_Group 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_Group aGroup1, in SMESH_Group 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_Group aGroup1, in SMESH_Group 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_Group aMainGroup, in SMESH_Group aToolGroup, in string name ) + raises (SALOME::SALOME_Exception); + /*! * Add hypothesis to the mesh, under a particular subShape * (or the main shape itself) @@ -90,7 +235,8 @@ module SMESH * (or one previous hypothesis on the subShape) * raises exception if hypothesis has not been created */ - boolean AddHypothesis(in GEOM::GEOM_Shape aSubShape, in SMESH_Hypothesis anHyp) + 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) // raises (SALOME::SALOME_Exception); @@ -99,8 +245,8 @@ module SMESH /*! * Remove an hypothesis previouly added with AddHypothesis. */ - boolean RemoveHypothesis(in GEOM::GEOM_Shape aSubShape, - in SMESH_Hypothesis anHyp) + Hypothesis_Status RemoveHypothesis(in GEOM::GEOM_Object aSubObject, + in SMESH_Hypothesis anHyp) raises (SALOME::SALOME_Exception); // boolean RemoveHypothesis(in SMESH_subMesh aSubMesh, // in SMESH_Hypothesis anHyp) @@ -109,7 +255,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); @@ -150,10 +296,12 @@ module SMESH */ void ExportDAT( in string file ) raises (SALOME::SALOME_Exception); - void ExportMED( in string file ) + void ExportMED( in string file, in boolean auto_groups ) 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 @@ -185,11 +333,19 @@ module SMESH long NbHexas() raises (SALOME::SALOME_Exception); + long NbPyramids() + raises (SALOME::SALOME_Exception); + + long NbPrisms() + raises (SALOME::SALOME_Exception); + long NbSubMesh() raises (SALOME::SALOME_Exception); + + string Dump(); }; - interface SMESH_subMesh + interface SMESH_subMesh : SALOME::GenericObj { /*! * @@ -200,7 +356,7 @@ module SMESH /*! * */ - long GetNumberOfNodes() + long GetNumberOfNodes( in boolean all ) raises (SALOME::SALOME_Exception); /*! @@ -209,6 +365,12 @@ module SMESH long_array GetElementsId() raises (SALOME::SALOME_Exception); + /*! + * + */ + long_array GetElementsByType( in ElementType theType ) + raises (SALOME::SALOME_Exception); + /*! * */ @@ -234,28 +396,113 @@ 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 TriToQuad(in long_array IDsOfElements, + in NumericalFunctor Criterion, + in double MaxAngle); + + boolean QuadToTri(in long_array IDsOfElements, + in NumericalFunctor Criterion); + + boolean SplitQuad(in long_array IDsOfElements, + 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); + + void RenumberNodes(); + + void RenumberElements(); + + void RotationSweep(in long_array IDsOfElements, + in AxisStruct Axix, + in double AngleInRadians, + in long NbOfSteps, + in double Tolerance); + + void ExtrusionSweep(in long_array IDsOfElements, + in DirStruct StepVector, + in long NbOfSteps); + + enum MirrorType { POINT, AXIS, PLANE }; + + void Mirror (in long_array IDsOfElements, + in AxisStruct Mirror, + in MirrorType theMirrorType, + in boolean Copy); + + void Translate (in long_array IDsOfElements, + in DirStruct Vector, + in boolean Copy); + + void Rotate (in long_array IDsOfElements, + 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(); + + boolean SewFreeBorders (in long FirstNodeID1, + in long SecondNodeID1, + in long LastNodeID1, + in long FirstNodeID2, + in long SecondNodeID2, + in long LastNodeID2); + + boolean SewConformFreeBorders (in long FirstNodeID1, + in long SecondNodeID1, + in long LastNodeID1, + in long FirstNodeID2, + in long SecondNodeID2); + + boolean SewBorderToSide (in long FirstNodeIDOnFreeBorder, + in long SecondNodeIDOnFreeBorder, + in long LastNodeIDOnFreeBorder, + in long FirstNodeIDOnSide, + in long LastNodeIDOnSide); + + boolean 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); }; };