X-Git-Url: http://git.salome-platform.org/gitweb/?p=modules%2Fsmesh.git;a=blobdiff_plain;f=idl%2FSMESH_Gen.idl;h=a7e4c50940d535482525235f37ca4fb35c27e86c;hp=7cc93177b00784f00da161877c512d8c8a46051a;hb=907c315580012ca7e75c640c88f79e3ff2239276;hpb=0635c9fc80f67d1e5dc0e94ec85f487286a92070 diff --git a/idl/SMESH_Gen.idl b/idl/SMESH_Gen.idl index 7cc93177b..a7e4c5094 100644 --- a/idl/SMESH_Gen.idl +++ b/idl/SMESH_Gen.idl @@ -1,23 +1,23 @@ -// Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2020 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 +// 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 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. +// 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 +// 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 +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // File : SMESH_Gen.idl // Author : Paul RASCLE, EDF @@ -36,11 +36,13 @@ module SMESH { + typedef sequence sobject_list; typedef sequence object_array; typedef sequence mesh_array; interface FilterManager; interface SMESH_Pattern; + interface Measurements; /*! * Tags definition @@ -69,12 +71,14 @@ module SMESH const long Tag_EdgeGroups = 12; const long Tag_FaceGroups = 13; const long Tag_VolumeGroups = 14; - const long Tag_LastGroup = 14; + const long Tag_0DElementsGroups = 15; + const long Tag_BallElementsGroups = 16; + const long Tag_LastGroup = 16; /*! - * Hypothesis definintion error + * Hypothesis definition error */ - struct AlgoStateError + struct AlgoStateError { Hypothesis_Status state; string algoName; @@ -96,20 +100,33 @@ module SMESH COMPERR_EXCEPTION , // other exception raised COMPERR_MEMORY_PB , // memory allocation problem COMPERR_ALGO_FAILED , // computation failed - COMPERR_BAD_SHAPE // bad geometry + 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 subshape of a shape to mesh + 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; + /*! + * Way to initialize hypothesis + */ + struct HypInitParams + { + short way; // 0 - by mesh, 1 - by geometry size + preferred parameters, 2 - by averageLength + double averageLength; + boolean quadDominated; + }; - interface SMESH_Gen : Engines::Component, SALOMEDS::Driver + interface SMESH_Gen : Engines::EngineComponent, SALOMEDS::Driver { //GEOM::GEOM_Gen SetGeomEngine( in string containerLoc ); void SetGeomEngine( in GEOM::GEOM_Gen geomcompo ); @@ -118,6 +135,8 @@ module SMESH SMESH_Pattern GetPattern(); + Measurements CreateMeasurements(); + /*! Set the current mode */ @@ -129,24 +148,38 @@ module SMESH boolean IsEmbeddedMode(); /*! - Set the current study + Update the study */ - void SetCurrentStudy( in SALOMEDS::Study theStudy ); - + void UpdateStudy(); + /*! - Get the current study + Set enable publishing in the study */ - SALOMEDS::Study GetCurrentStudy(); + void SetEnablePublish( in boolean theIsEnablePublish ); + + /*! + Get enable publishing in the study + */ + boolean IsEnablePublish(); /*! - * Create a hypothesis that can be shared by differents parts of the mesh. + * Create a hypothesis that can be shared by different 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 ) + in string theLibName ) + raises ( SALOME::SALOME_Exception ); + + /*! + * Create a hypothesis and initialize it by average length + */ + SMESH_Hypothesis CreateHypothesisByAverageLength( in string theHypName, + in string theLibName, + in double theAverageLength, + in boolean theQuadDominated) raises ( SALOME::SALOME_Exception ); /*! @@ -160,9 +193,20 @@ module SMESH in string theLibName, in SMESH_Mesh theMesh, in GEOM::GEOM_Object theGeom, - in boolean byMesh) + in HypInitParams theWay) 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 @@ -177,7 +221,7 @@ module SMESH * Set the object name */ void SetName( in string theObjectIOR, - in string theObjectName ) + in string theObjectName ) raises ( SALOME::SALOME_Exception ); /*! @@ -189,13 +233,13 @@ module SMESH */ 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) @@ -207,7 +251,14 @@ module SMESH * Create Mesh object(s) importing data from given MED file */ mesh_array CreateMeshesFromMED( in string theFileName, - out SMESH::DriverMED_ReadStatus theStatus ) + 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 ); /*! @@ -217,43 +268,143 @@ module SMESH raises ( SALOME::SALOME_Exception ); /*! - * Create a Mesh object, without a geometry shape reference + * 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 NewEmpty() -// raises ( SALOME::SALOME_Exception ); + SMESH_Mesh CopyMesh(in SMESH_IDSource meshPart, + in string meshName, + in boolean toCopyGroups, + in boolean toKeepIDs) + raises ( SALOME::SALOME_Exception ); + + /*! + * Create a mesh by copying definitions of another mesh to a given geometry + * \param sourceMesh - a mesh to copy + * \param newGeometry - a new geometry + * \param meshName - a name of the new mesh + * \param toCopyGroups - to create groups in the new mesh + * \param toReuseHypotheses - if True, existing hypothesis will be used by the new mesh, + * otherwise new hypotheses with the same parameters will be created for the new mesh. + * \param toCopyElements - to copy mesh elements of same sub-shapes of the two geometries + * \param newMesh - return a new mesh + * \param newGroups - return new groups + * \param newSubmeshes - return new sub-meshes + * \param newHypotheses - return new algorithms and hypotheses + * \param invalidEntries - return study entries of objects whose + * counterparts are not found in the newGeometry, followed by entries + * of mesh sub-objects that are invalid because they depend on a not found + * preceding sub-shape + */ + boolean CopyMeshWithGeom( in SMESH_Mesh sourceMesh, + in GEOM::GEOM_Object newGeometry, + in string meshName, + in boolean toCopyGroups, + in boolean toReuseHypotheses, + in boolean toCopyElements, + out SMESH_Mesh newMesh, + out ListOfGroups newGroups, + out submesh_array newSubmeshes, + out ListOfHypothesis newHypotheses, + out string_array invalidEntries) + raises ( SALOME::SALOME_Exception ); + + /*! + * Concatenate the given meshes or groups into one mesh, + * optionally to theMeshToAppendTo. + * 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, + in SMESH_Mesh theMeshToAppendTo) + raises ( SALOME::SALOME_Exception ); + + /*! + * Concatenate the given meshes into one mesh, + * optionally to theMeshToAppendTo. + * 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, + in SMESH_Mesh theMeshToAppendTo) + raises ( SALOME::SALOME_Exception ); /*! - * Mesh a subShape. - * First, verify list of hypothesis associated with the subShape, + * 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 ) + 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 ) + 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. + * 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 ) + 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 + * Return errors of hypotheses definition * algo_error_array is empty if everything is OK */ - algo_error_array GetAlgoState( in SMESH_Mesh theMesh, + algo_error_array GetAlgoState( in SMESH_Mesh theMesh, in GEOM::GEOM_Object theSubObject ) raises ( SALOME::SALOME_Exception ); @@ -261,19 +412,27 @@ module SMESH * Return errors of mesh computation * compute_error_array is empty if everything is OK */ - compute_error_array GetComputeErrors( in SMESH_Mesh theMesh, + 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 + * 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 subshapes + * 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, @@ -282,7 +441,7 @@ module SMESH /*! * Return geometrical object the given element is built on. - * The returned geometrical object, if not nil, is either found in the + * 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, @@ -295,42 +454,137 @@ module SMESH * The returned geometrical object not published in study by this method. */ GEOM::GEOM_Object FindGeometryByMeshElement( in SMESH_Mesh theMesh, - in long theElementID) + 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. + * \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. */ - SMESH_Mesh Concatenate(in mesh_array theMeshesArray, - in boolean theUniteIdenticalGroups, - in boolean theMergeNodesAndElements, - in double theMergeTolerance) - raises ( SALOME::SALOME_Exception ); + long GetObjectId(in Object theObject); /*! - * 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. + * \brief Get version of MED format being used. */ - SMESH_Mesh ConcatenateWithGroups(in mesh_array theMeshesArray, - in boolean theUniteIdenticalGroups, - in boolean theMergeNodesAndElements, - in double theMergeTolerance) - raises ( SALOME::SALOME_Exception ); + string GetMEDFileVersion(); /*! - * \brief Return id of object, registered in current study context + * \brief Get MED version of the file by its name. + */ + string GetMEDVersion(in string theFileName); + + /*! + * \brief Check compatibility of file with MED format being used, for read only. + */ + boolean CheckCompatibility(in string theFileName); + + /*! + * \brief Check compatibility of file with MED format being used, for append on write. + */ + boolean CheckWriteCompatibility(in string theFileName); + + /*! + * \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 * - * Can be used to check if the object was created in the same container, as this engine. + * This function is used in the drag-n-drop functionality. */ - long GetObjectId(in Object theObject); + 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 ); + + + /*! + * Return indices of elements, which are located inside the sphere + * \param theSource - mesh, sub-mesh or group + * \param theElemType - mesh element type + * \param theX - x coordinate of the center of the sphere + * \param theY - y coordinate of the center of the sphere + * \param theZ - y coordinate of the center of the sphere + * \param theR - radius of the sphere + */ + long_array GetInsideSphere( in SMESH_IDSource theSource, + in ElementType theElemType, + in double theX, + in double theY, + in double theZ, + in double theR ); + + /*! + * Return indices of elements, which are located inside the box + * \param theSource - mesh, sub-mesh or group + * \param theElemType - mesh element type + * \param theX1 - x coordinate of the first opposite point + * \param theY1 - y coordinate of the first opposite point + * \param theZ1 - y coordinate of the first opposite point + * \param theX2 - x coordinate of the second opposite point + * \param theY2 - y coordinate of the second opposite point + * \param theZ2 - y coordinate of the second opposite point + */ + long_array GetInsideBox( in SMESH_IDSource theSource, + in ElementType theElemType, + in double theX1, + in double theY1, + in double theZ1, + in double theX2, + in double theY2, + in double theZ2); + /*! + * Return indices of elements, which are located inside the box + * \param theSource - mesh, sub-mesh or group + * \param theElemType - mesh element type + * \param theX - x coordinate of the cented of the bottom face + * \param theY - y coordinate of the cented of the bottom face + * \param theZ - y coordinate of the cented of the bottom face + * \param theDX - x coordinate of the cented of the base vector + * \param theDY - y coordinate of the cented of the base vector + * \param theDZ - z coordinate of the cented of the base vector + * \param theH - height of the cylinder + * \param theR - radius of the cylinder + */ + long_array GetInsideCylinder( in SMESH_IDSource theSource, + in ElementType theElemType, + in double theX, + in double theY, + in double theZ, + in double theDX, + in double theDY, + in double theDZ, + in double theH, + in double theR ); + /*! + * Return indices of elements, which are located inside the geometry + * \param theSource - mesh, sub-mesh or group + * \param theElemType - mesh element type + * \param theGeom - geometrical object + * \param theTolerance - tolerance for selection. + */ + long_array GetInside( in SMESH_IDSource theSource, + in ElementType theElemType, + in GEOM::GEOM_Object theGeom, + in double theTolerance ); + + }; };