// 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.salome-platform.org/ or email : webmaster.salome@opencascade.com // // // // File : SMESH_Gen.idl // Author : Paul RASCLE, EDF // $Header$ #ifndef _SMESH_GEN_IDL_ #define _SMESH_GEN_IDL_ #include "SALOME_Exception.idl" #include "SALOME_Component.idl" #include "SALOMEDS.idl" #include "GEOM_Gen.idl" #include "SMESH_Mesh.idl" #include "SMESH_Hypothesis.idl" module SMESH { typedef sequence object_array; typedef sequence mesh_array; interface FilterManager; interface SMESH_Pattern; /*! * Tags definition */ // Top level const long Tag_HypothesisRoot = 1; // hypotheses root const long Tag_AlgorithmsRoot = 2; // algorithms root const long Tag_FirstMeshRoot = 3; // first mesh root // Mesh/Submesh const long Tag_RefOnShape = 1; // references to shape const long Tag_RefOnAppliedHypothesis = 2; // applied hypotheses root const long Tag_RefOnAppliedAlgorithms = 3; // applied algorithms root // Mesh only: sub-meshes roots by type const long Tag_FirstSubMesh = 4; const long Tag_SubMeshOnVertex = 4; const long Tag_SubMeshOnEdge = 5; const long Tag_SubMeshOnWire = 6; const long Tag_SubMeshOnFace = 7; const long Tag_SubMeshOnShell = 8; const long Tag_SubMeshOnSolid = 9; const long Tag_SubMeshOnCompound = 10; const long Tag_LastSubMesh = 10; // Mesh only: group roots by type const long Tag_FirstGroup = 11; const long Tag_NodeGroups = 11; const long Tag_EdgeGroups = 12; const long Tag_FaceGroups = 13; const long Tag_VolumeGroups = 14; const long Tag_LastGroup = 14; /*! * Hypothesis definintion error */ struct AlgoStateError { Hypothesis_Status state; string algoName; long algoDim; boolean isGlobalAlgo; }; typedef sequence algo_error_array; /*! * Mesh computation error */ enum ComputeErrorName { COMPERR_OK , COMPERR_BAD_INPUT_MESH, // wrong mesh on lower submesh COMPERR_STD_EXCEPTION , // some std exception raised COMPERR_OCC_EXCEPTION , // OCC exception raised COMPERR_SLM_EXCEPTION , // SALOME exception raised COMPERR_EXCEPTION , // other exception raised COMPERR_MEMORY_PB , // memory allocation problem COMPERR_ALGO_FAILED , // computation failed COMPERR_BAD_SHAPE // bad geometry }; struct ComputeError { short code; // ComputeErrorName or, if negative, algo specific code string comment; // textual problem description string algoName; short subShapeID; // id of subshape of a shape to mesh boolean hasBadMesh; // there are elements preventing computation available for visualization }; typedef sequence compute_error_array; interface SMESH_Gen : Engines::Component, SALOMEDS::Driver { //GEOM::GEOM_Gen SetGeomEngine( in string containerLoc ); void SetGeomEngine( in GEOM::GEOM_Gen geomcompo ); FilterManager CreateFilterManager(); SMESH_Pattern GetPattern(); /*! Set the current mode */ void SetEmbeddedMode( in boolean theMode ); /*! Get the current mode */ boolean IsEmbeddedMode(); /*! Set the current study */ void SetCurrentStudy( in SALOMEDS::Study theStudy ); /*! Get the current study */ SALOMEDS::Study GetCurrentStudy(); /*! * Create a hypothesis that can be shared by differents parts of the mesh. * An hypothesis is either: * - a method used to generate or modify a part of the mesh (algorithm). * - a parameter or a law used by an algorithm. * Algorithms are 1D, 2D or 3D. */ SMESH_Hypothesis CreateHypothesis( in string theHypName, in string theLibName ) raises ( SALOME::SALOME_Exception ); /*! * Return a hypothesis holding parameter values corresponding either to the mesh * existing on the given geometry or to size of the geometry. * The returned hypothesis may be the one existing in a study and used * to compute the mesh, or a temporary one created just to pass parameter * values. */ SMESH_Hypothesis GetHypothesisParameterValues( in string theHypName, in string theLibName, in SMESH_Mesh theMesh, in GEOM::GEOM_Object theGeom, in boolean byMesh) raises ( SALOME::SALOME_Exception ); /*! * Set the object name */ void SetName( in string theObjectIOR, in string theObjectName ) raises ( SALOME::SALOME_Exception ); /*! * Create a Mesh object, given a geometry shape. * Mesh is created empty (no points, no elements). * Shape is explored via GEOM_Client to create local copies. * of TopoDS_Shapes and bind CORBA references of shape & subshapes * with TopoDS_Shapes */ SMESH_Mesh CreateMesh( in GEOM::GEOM_Object theObject ) raises ( SALOME::SALOME_Exception ); /*! * Create an empty mesh object */ SMESH_Mesh CreateEmptyMesh() raises ( SALOME::SALOME_Exception ); /*! * Create Mesh object importing data from given UNV file * (UNV supported version is I-DEAS 10) */ SMESH_Mesh CreateMeshesFromUNV( in string theFileName ) raises ( SALOME::SALOME_Exception ); /*! * Create Mesh object(s) importing data from given MED file */ mesh_array CreateMeshesFromMED( in string theFileName, out SMESH::DriverMED_ReadStatus theStatus ) raises ( SALOME::SALOME_Exception ); /*! * Create Mesh object importing data from given STL file */ SMESH_Mesh CreateMeshesFromSTL( in string theFileName ) raises ( SALOME::SALOME_Exception ); /*! * Create a Mesh object, without a geometry shape reference */ // SMESH_Mesh NewEmpty() // raises ( SALOME::SALOME_Exception ); /*! * Mesh a subShape. * First, verify list of hypothesis associated with the subShape, * return NOK if hypothesis are not sufficient */ boolean Compute( in SMESH_Mesh theMesh, in GEOM::GEOM_Object theSubObject ) raises ( SALOME::SALOME_Exception ); /*! * Return true if hypotheses are defined well */ boolean IsReadyToCompute( in SMESH_Mesh theMesh, in GEOM::GEOM_Object theSubObject ) raises ( SALOME::SALOME_Exception ); /*! * Calculate Mesh as preview till indicated dimension * First, verify list of hypothesis associated with the subShape. * Return mesh preview structure */ MeshPreviewStruct Precompute( in SMESH_Mesh theMesh, in GEOM::GEOM_Object theSubObject, in Dimension theDimension, inout long_array theShapesId ) raises ( SALOME::SALOME_Exception ); /*! * Return errors of hypotheses definintion * algo_error_array is empty if everything is OK */ algo_error_array GetAlgoState( in SMESH_Mesh theMesh, in GEOM::GEOM_Object theSubObject ) raises ( SALOME::SALOME_Exception ); /*! * Return errors of mesh computation * compute_error_array is empty if everything is OK */ compute_error_array GetComputeErrors( in SMESH_Mesh theMesh, in GEOM::GEOM_Object theSubObject ) raises ( SALOME::SALOME_Exception ); /*! * Return mesh elements preventing computation of a subshape */ MeshPreviewStruct GetBadInputElements( in SMESH_Mesh theMesh, in short theSubShapeID ) raises ( SALOME::SALOME_Exception ); /*! * Return indeces of faces, edges and vertices of given subshapes * within theMainObject */ long_array GetSubShapesId( in GEOM::GEOM_Object theMainObject, in object_array theListOfSubObjects ) raises ( SALOME::SALOME_Exception ); /*! * Return geometrical object the given element is built on. * The returned geometrical object, if not nil, is either found in the * study or is published by this method with the given name */ GEOM::GEOM_Object GetGeometryByMeshElement( in SMESH_Mesh theMesh, in long theElementID, in string theGeomName) raises ( SALOME::SALOME_Exception ); /*! * Return geometrical object the given element is built on. * The returned geometrical object not published in study by this method. */ GEOM::GEOM_Object FindGeometryByMeshElement( in SMESH_Mesh theMesh, in long theElementID) raises ( SALOME::SALOME_Exception ); /*! * Concatenate the given meshes into one mesh. * Union groups with the same name and type if * theUniteIdenticalGroups flag is true. * Merge coincident nodes and elements if * theMergeNodesAndElements flag is true. */ SMESH_Mesh Concatenate(in mesh_array theMeshesArray, in boolean theUniteIdenticalGroups, in boolean theMergeNodesAndElements, in double theMergeTolerance) raises ( SALOME::SALOME_Exception ); /*! * Concatenate the given meshes into one mesh. * Union groups with the same name and type if * theUniteIdenticalGroups flag is true. * Merge coincident nodes and elements if * theMergeNodesAndElements flag is true. * Create the groups of all elements from initial meshes. */ SMESH_Mesh ConcatenateWithGroups(in mesh_array theMeshesArray, in boolean theUniteIdenticalGroups, in boolean theMergeNodesAndElements, in double theMergeTolerance) raises ( SALOME::SALOME_Exception ); /*! * \brief Return id of object, registered in current study context * * Can be used to check if the object was created in the same container, as this engine. */ long GetObjectId(in Object theObject); }; }; #endif