mirror of
https://git.salome-platform.org/gitpub/modules/smesh.git
synced 2024-12-26 17:30:35 +05:00
49b0d94452
Treate a case where a valid mesh is computed anyhow while the algo reports errors + COMPERR_WARNING //!< algo reports error but sub-mesh is computed anyway
375 lines
13 KiB
Plaintext
375 lines
13 KiB
Plaintext
// Copyright (C) 2007-2011 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 subshape 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 importing data from given STL file
|
|
*/
|
|
SMESH_Mesh CreateMeshesFromSTL( in string theFileName )
|
|
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 subShape,
|
|
* 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 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 );
|
|
|
|
/*!
|
|
* \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
|