X-Git-Url: http://git.salome-platform.org/gitweb/?p=modules%2Fsmesh.git;a=blobdiff_plain;f=idl%2FSMESH_Gen.idl;h=ef962582eb49fd8e32496e6fd1491da40cf5d47b;hp=5617d144baf6e5ab3d610ab88eae4cb8d4447424;hb=2a6e16b7faacf40cf3b91605690ce04f14141f1b;hpb=bef9beee88cac57394b8dc3bc914381c1a2fff83 diff --git a/idl/SMESH_Gen.idl b/idl/SMESH_Gen.idl index 5617d144b..ef962582e 100644 --- a/idl/SMESH_Gen.idl +++ b/idl/SMESH_Gen.idl @@ -1,11 +1,26 @@ -//============================================================================= -// File : SMESH_Gen.idl -// Created : jeu avr 11 15:26:35 CEST 2002 -// Author : Paul RASCLE, EDF -// Project : SALOME -// Copyright : EDF 2002 -// $Header$ -//============================================================================= +// Copyright (C) 2007-2015 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, or (at your option) any later version. +// +// 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_ @@ -15,27 +30,176 @@ #include "SALOMEDS.idl" #include "GEOM_Gen.idl" -#include "GEOM_Shape.idl" #include "SMESH_Mesh.idl" #include "SMESH_Hypothesis.idl" module SMESH { - typedef sequence shape_array; + typedef sequence sobject_list; + typedef sequence object_array; + typedef sequence mesh_array; - interface SMESH_Gen : Engines::Component, SALOMEDS::Driver + 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_BallElementsGroups = 16; + const long Tag_LastGroup = 16; + + /*! + * 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 + COMPERR_WARNING , // algo reports error but sub-mesh is computed anyway + COMPERR_CANCELED , // compute canceled + COMPERR_NO_MESH_ON_SHAPE,// no mesh elements assigned to sub-mesh + COMPERR_BAD_PARMETERS // incorrect hypotheses parameters + }; + 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 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 an hypothesis that can be shared by differents parts of the mesh. + * 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 anHyp, - in long studyId) - raises (SALOME::SALOME_Exception); + 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 ); + + /*! + * Returns \c True if a hypothesis is assigned to a sole sub-mesh in a current Study + * \param [in] theHyp - the hypothesis of interest + * \param [out] theMesh - the sole mesh using \a theHyp + * \param [out] theShape - the sole geometry \a theHyp is assigned to + * \return boolean - \c True if \a theMesh and \a theShape are sole using \a theHyp + */ + boolean GetSoleSubMeshUsingHyp( in SMESH_Hypothesis theHyp, + out SMESH_Mesh theMesh, + out GEOM::GEOM_Object theShape); + + /*! + * 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. @@ -44,51 +208,237 @@ module SMESH * of TopoDS_Shapes and bind CORBA references of shape & subshapes * with TopoDS_Shapes */ - SMESH_Mesh Init(in GEOM::GEOM_Gen geomEngine, - in long studyId, - in GEOM::GEOM_Shape aShape) - raises (SALOME::SALOME_Exception); + 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 a Mesh object, without a geometry shape reference + * Create Mesh object importing data from given STL file */ -// SMESH_Mesh NewEmpty(in GEOM::GEOM_Gen geomEngine, -// in long studyId) -// raises (SALOME::SALOME_Exception); + SMESH_Mesh CreateMeshesFromSTL( in string theFileName ) + raises ( SALOME::SALOME_Exception ); /*! - * Mesh a subShape. - * First, verify list of hypothesis associated with the subShape, + * 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 Mesh object importing data from given GMF file + * \param theFileName - a name of file to import + * \param theMakeRequiredGroups - if true, groups of required entities will be created + */ + SMESH_Mesh CreateMeshesFromGMF( in string theFileName, + in boolean theMakeRequiredGroups, + out SMESH::ComputeError theError) + 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 or groups 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 ListOfIDSources 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 ListOfIDSources 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 aMesh, in GEOM::GEOM_Shape aSubShape) - raises (SALOME::SALOME_Exception); + 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 ); + + /*! + * Create groups of elements preventing computation of a sub-shape + */ + SMESH::ListOfGroups MakeGroupsOfBadInputElements( in SMESH_Mesh theMesh, + in short theSubShapeID, + in string theGroupName) + raises ( SALOME::SALOME_Exception ); /*! - * + * Return indices 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 ); - boolean IsReadyToCompute(in SMESH_Mesh aMesh, in GEOM::GEOM_Shape aSubShape) - 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. */ - long_array GetSubShapesId(in GEOM::GEOM_Gen geomEngine, - in long studyId, - in GEOM::GEOM_Shape mainShape, - in shape_array listOfSubShape) - raises (SALOME::SALOME_Exception); - + 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_array GetSubMeshesState(in GEOM::GEOM_Gen geomEngine, - // in long studyId, - // in shape_array listOfSubShape) - // raises (SALOME::SALOME_Exception); - + 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); + + /*! + * \brief Moves objects to the specified position + * \param what objects being moved + * \param where parent object where objects are moved to + * \param row position in the parent object's children list at which objects are moved + * + * This function is used in the drag-n-drop functionality. + */ + void Move( in sobject_list what, + in SALOMEDS::SObject where, + in long row ); + /*! + * Returns true if algorithm can be used to mesh a given geometry + * \param theAlgoType - the algorithm type + * \param theLibName - a name of the Plug-in library implementing the algorithm + * \param theShapeObject - the geometry to mesh + * \param toCheckAll - if \c True, returns \c True if all shapes are meshable, + * else, returns \c True if at least one shape is meshable + */ + boolean IsApplicable( in string theAlgoType, + in string theLibName, + in GEOM::GEOM_Object theShapeObject, + in boolean toCheckAll ); }; };