smesh/idl/SMESH_Gen.idl
2012-04-13 09:31:26 +00:00

389 lines
14 KiB
Plaintext

// Copyright (C) 2007-2012 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
//
// 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
#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<GEOM::GEOM_Object> object_array;
typedef sequence<SMESH_Mesh> mesh_array;
interface FilterManager;
interface SMESH_Pattern;
interface Measurements;
/*!
* 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_0DElementsGroups = 15;
const long Tag_LastGroup = 15;
/*!
* Hypothesis definintion error
*/
struct AlgoStateError
{
Hypothesis_Status state;
string algoName;
long algoDim;
boolean isGlobalAlgo;
};
typedef sequence<AlgoStateError> 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
COMPERR_WARNING // algo reports error but sub-mesh is computed anyway
};
struct ComputeError
{
short code; // ComputeErrorName or, if negative, algo specific code
string comment; // textual problem description
string algoName;
short subShapeID; // id of sub-shape of a shape to mesh
boolean hasBadMesh; // there are elements preventing computation available for visualization
};
typedef sequence<ComputeError> compute_error_array;
interface SMESH_Gen : Engines::EngineComponent, SALOMEDS::Driver
{
//GEOM::GEOM_Gen SetGeomEngine( in string containerLoc );
void SetGeomEngine( in GEOM::GEOM_Gen geomcompo );
FilterManager CreateFilterManager();
SMESH_Pattern GetPattern();
Measurements CreateMeasurements();
/*!
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 );
/*!
* Sets number of segments per diagonal of boundary box of geometry by which
* default segment length of appropriate 1D hypotheses is defined
*/
void SetBoundaryBoxSegmentation( in long theNbSegments ) raises ( SALOME::SALOME_Exception );
/*!
* \brief Sets default number of segments per edge
*/
void SetDefaultNbSegments( in long theNbSegments) 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(s) importing data from given MED file
*/
mesh_array CreateMeshesFromSAUV( 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 Mesh object(s) importing data from given CGNS file
*/
mesh_array CreateMeshesFromCGNS( in string theFileName,
out SMESH::DriverMED_ReadStatus theStatus )
raises ( SALOME::SALOME_Exception );
/*!
* Create a mesh by copying a part of another mesh
* \param meshPart - a part of mesh to copy
* \param meshName - a name of the new mesh
* \param toCopyGroups - to create in the new mesh groups
* the copied elements belongs to
* \param toKeepIDs - to preserve IDs of the copied elements or not
*/
SMESH_Mesh CopyMesh(in SMESH_IDSource meshPart,
in string meshName,
in boolean toCopyGroups,
in boolean toKeepIDs)
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 );
/*!
* Mesh a subShape.
* First, verify list of hypothesis associated with the Sub-shape,
* return NOK if hypothesis are not sufficient
*/
boolean Compute( in SMESH_Mesh theMesh,
in GEOM::GEOM_Object theSubObject )
raises ( SALOME::SALOME_Exception );
/*!
* Cancel a computation.
*/
void CancelCompute( in SMESH_Mesh theMesh,
in GEOM::GEOM_Object theSubObject );
/*!
* Return true if hypotheses are defined well
*/
boolean IsReadyToCompute( in SMESH_Mesh theMesh,
in GEOM::GEOM_Object theSubObject )
raises ( SALOME::SALOME_Exception );
/*!
* Evaluates size of prospective mesh on a shape
*/
long_array Evaluate(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 Sub-shape.
* 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 sub-shape
*/
MeshPreviewStruct GetBadInputElements( in SMESH_Mesh theMesh,
in short theSubShapeID )
raises ( SALOME::SALOME_Exception );
/*!
* Return indeces of faces, edges and vertices of given sub-shapes
* 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 );
/*!
* \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);
/*!
* \brief Get MED version of the file by its name.
*/
boolean GetMEDVersion(in string theFileName, out MED_VERSION theVersion);
/*!
* \brief Get names of meshes defined in file with the specified name.
*/
string_array GetMeshNames(in string theFileName);
};
};
#endif