1 // Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE
3 // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
4 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
6 // This library is free software; you can redistribute it and/or
7 // modify it under the terms of the GNU Lesser General Public
8 // License as published by the Free Software Foundation; either
9 // version 2.1 of the License.
11 // This library is distributed in the hope that it will be useful,
12 // but WITHOUT ANY WARRANTY; without even the implied warranty of
13 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 // Lesser General Public License for more details.
16 // You should have received a copy of the GNU Lesser General Public
17 // License along with this library; if not, write to the Free Software
18 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
20 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
23 // File : SMESH_Gen.idl
24 // Author : Paul RASCLE, EDF
26 #ifndef _SMESH_GEN_IDL_
27 #define _SMESH_GEN_IDL_
29 #include "SALOME_Exception.idl"
30 #include "SALOME_Component.idl"
31 #include "SALOMEDS.idl"
33 #include "GEOM_Gen.idl"
35 #include "SMESH_Mesh.idl"
36 #include "SMESH_Hypothesis.idl"
40 typedef sequence<GEOM::GEOM_Object> object_array;
41 typedef sequence<SMESH_Mesh> mesh_array;
43 interface FilterManager;
44 interface SMESH_Pattern;
45 interface Measurements;
51 const long Tag_HypothesisRoot = 1; // hypotheses root
52 const long Tag_AlgorithmsRoot = 2; // algorithms root
53 const long Tag_FirstMeshRoot = 3; // first mesh root
55 const long Tag_RefOnShape = 1; // references to shape
56 const long Tag_RefOnAppliedHypothesis = 2; // applied hypotheses root
57 const long Tag_RefOnAppliedAlgorithms = 3; // applied algorithms root
58 // Mesh only: sub-meshes roots by type
59 const long Tag_FirstSubMesh = 4;
60 const long Tag_SubMeshOnVertex = 4;
61 const long Tag_SubMeshOnEdge = 5;
62 const long Tag_SubMeshOnWire = 6;
63 const long Tag_SubMeshOnFace = 7;
64 const long Tag_SubMeshOnShell = 8;
65 const long Tag_SubMeshOnSolid = 9;
66 const long Tag_SubMeshOnCompound = 10;
67 const long Tag_LastSubMesh = 10;
68 // Mesh only: group roots by type
69 const long Tag_FirstGroup = 11;
70 const long Tag_NodeGroups = 11;
71 const long Tag_EdgeGroups = 12;
72 const long Tag_FaceGroups = 13;
73 const long Tag_VolumeGroups = 14;
74 const long Tag_LastGroup = 14;
77 * Hypothesis definintion error
81 Hypothesis_Status state;
86 typedef sequence<AlgoStateError> algo_error_array;
89 * Mesh computation error
94 COMPERR_BAD_INPUT_MESH, // wrong mesh on lower submesh
95 COMPERR_STD_EXCEPTION , // some std exception raised
96 COMPERR_OCC_EXCEPTION , // OCC exception raised
97 COMPERR_SLM_EXCEPTION , // SALOME exception raised
98 COMPERR_EXCEPTION , // other exception raised
99 COMPERR_MEMORY_PB , // memory allocation problem
100 COMPERR_ALGO_FAILED , // computation failed
101 COMPERR_BAD_SHAPE // bad geometry
105 short code; // ComputeErrorName or, if negative, algo specific code
106 string comment; // textual problem description
108 short subShapeID; // id of subshape of a shape to mesh
109 boolean hasBadMesh; // there are elements preventing computation available for visualization
111 typedef sequence<ComputeError> compute_error_array;
114 interface SMESH_Gen : Engines::Component, SALOMEDS::Driver
116 //GEOM::GEOM_Gen SetGeomEngine( in string containerLoc );
117 void SetGeomEngine( in GEOM::GEOM_Gen geomcompo );
119 FilterManager CreateFilterManager();
121 SMESH_Pattern GetPattern();
123 Measurements CreateMeasurements();
128 void SetEmbeddedMode( in boolean theMode );
133 boolean IsEmbeddedMode();
136 Set the current study
138 void SetCurrentStudy( in SALOMEDS::Study theStudy );
141 Get the current study
143 SALOMEDS::Study GetCurrentStudy();
146 * Create a hypothesis that can be shared by differents parts of the mesh.
147 * An hypothesis is either:
148 * - a method used to generate or modify a part of the mesh (algorithm).
149 * - a parameter or a law used by an algorithm.
150 * Algorithms are 1D, 2D or 3D.
152 SMESH_Hypothesis CreateHypothesis( in string theHypName,
153 in string theLibName )
154 raises ( SALOME::SALOME_Exception );
157 * Return a hypothesis holding parameter values corresponding either to the mesh
158 * existing on the given geometry or to size of the geometry.
159 * The returned hypothesis may be the one existing in a study and used
160 * to compute the mesh, or a temporary one created just to pass parameter
163 SMESH_Hypothesis GetHypothesisParameterValues( in string theHypName,
164 in string theLibName,
165 in SMESH_Mesh theMesh,
166 in GEOM::GEOM_Object theGeom,
168 raises ( SALOME::SALOME_Exception );
171 * Sets number of segments per diagonal of boundary box of geometry by which
172 * default segment length of appropriate 1D hypotheses is defined
174 void SetBoundaryBoxSegmentation( in long theNbSegments ) raises ( SALOME::SALOME_Exception );
176 * \brief Sets default number of segments per edge
178 void SetDefaultNbSegments( in long theNbSegments) raises ( SALOME::SALOME_Exception );
181 * Set the object name
183 void SetName( in string theObjectIOR,
184 in string theObjectName )
185 raises ( SALOME::SALOME_Exception );
188 * Create a Mesh object, given a geometry shape.
189 * Mesh is created empty (no points, no elements).
190 * Shape is explored via GEOM_Client to create local copies.
191 * of TopoDS_Shapes and bind CORBA references of shape & subshapes
194 SMESH_Mesh CreateMesh( in GEOM::GEOM_Object theObject )
195 raises ( SALOME::SALOME_Exception );
198 * Create an empty mesh object
200 SMESH_Mesh CreateEmptyMesh()
201 raises ( SALOME::SALOME_Exception );
204 * Create Mesh object importing data from given UNV file
205 * (UNV supported version is I-DEAS 10)
207 SMESH_Mesh CreateMeshesFromUNV( in string theFileName )
208 raises ( SALOME::SALOME_Exception );
211 * Create Mesh object(s) importing data from given MED file
213 mesh_array CreateMeshesFromMED( in string theFileName,
214 out SMESH::DriverMED_ReadStatus theStatus )
215 raises ( SALOME::SALOME_Exception );
218 * Create Mesh object importing data from given STL file
220 SMESH_Mesh CreateMeshesFromSTL( in string theFileName )
221 raises ( SALOME::SALOME_Exception );
224 * Create a Mesh object, without a geometry shape reference
226 // SMESH_Mesh NewEmpty()
227 // raises ( SALOME::SALOME_Exception );
231 * First, verify list of hypothesis associated with the subShape,
232 * return NOK if hypothesis are not sufficient
234 boolean Compute( in SMESH_Mesh theMesh,
235 in GEOM::GEOM_Object theSubObject )
236 raises ( SALOME::SALOME_Exception );
239 * Return true if hypotheses are defined well
241 boolean IsReadyToCompute( in SMESH_Mesh theMesh,
242 in GEOM::GEOM_Object theSubObject )
243 raises ( SALOME::SALOME_Exception );
246 * Evaluates size of prospective mesh on a shape
248 long_array Evaluate(in SMESH_Mesh theMesh,
249 in GEOM::GEOM_Object theSubObject)
250 raises ( SALOME::SALOME_Exception );
253 * Calculate Mesh as preview till indicated dimension
254 * First, verify list of hypothesis associated with the subShape.
255 * Return mesh preview structure
257 MeshPreviewStruct Precompute( in SMESH_Mesh theMesh,
258 in GEOM::GEOM_Object theSubObject,
259 in Dimension theDimension,
260 inout long_array theShapesId )
261 raises ( SALOME::SALOME_Exception );
264 * Return errors of hypotheses definintion
265 * algo_error_array is empty if everything is OK
267 algo_error_array GetAlgoState( in SMESH_Mesh theMesh,
268 in GEOM::GEOM_Object theSubObject )
269 raises ( SALOME::SALOME_Exception );
272 * Return errors of mesh computation
273 * compute_error_array is empty if everything is OK
275 compute_error_array GetComputeErrors( in SMESH_Mesh theMesh,
276 in GEOM::GEOM_Object theSubObject )
277 raises ( SALOME::SALOME_Exception );
280 * Return mesh elements preventing computation of a subshape
282 MeshPreviewStruct GetBadInputElements( in SMESH_Mesh theMesh,
283 in short theSubShapeID )
284 raises ( SALOME::SALOME_Exception );
287 * Return indeces of faces, edges and vertices of given subshapes
288 * within theMainObject
290 long_array GetSubShapesId( in GEOM::GEOM_Object theMainObject,
291 in object_array theListOfSubObjects )
292 raises ( SALOME::SALOME_Exception );
295 * Return geometrical object the given element is built on.
296 * The returned geometrical object, if not nil, is either found in the
297 * study or is published by this method with the given name
299 GEOM::GEOM_Object GetGeometryByMeshElement( in SMESH_Mesh theMesh,
300 in long theElementID,
301 in string theGeomName)
302 raises ( SALOME::SALOME_Exception );
305 * Return geometrical object the given element is built on.
306 * The returned geometrical object not published in study by this method.
308 GEOM::GEOM_Object FindGeometryByMeshElement( in SMESH_Mesh theMesh,
309 in long theElementID)
310 raises ( SALOME::SALOME_Exception );
313 * Concatenate the given meshes into one mesh.
314 * Union groups with the same name and type if
315 * theUniteIdenticalGroups flag is true.
316 * Merge coincident nodes and elements if
317 * theMergeNodesAndElements flag is true.
319 SMESH_Mesh Concatenate(in mesh_array theMeshesArray,
320 in boolean theUniteIdenticalGroups,
321 in boolean theMergeNodesAndElements,
322 in double theMergeTolerance)
323 raises ( SALOME::SALOME_Exception );
326 * Concatenate the given meshes into one mesh.
327 * Union groups with the same name and type if
328 * theUniteIdenticalGroups flag is true.
329 * Merge coincident nodes and elements if
330 * theMergeNodesAndElements flag is true.
331 * Create the groups of all elements from initial meshes.
333 SMESH_Mesh ConcatenateWithGroups(in mesh_array theMeshesArray,
334 in boolean theUniteIdenticalGroups,
335 in boolean theMergeNodesAndElements,
336 in double theMergeTolerance)
337 raises ( SALOME::SALOME_Exception );
340 * \brief Return id of object, registered in current study context
342 * Can be used to check if the object was created in the same container, as this engine.
344 long GetObjectId(in Object theObject);
347 * \brief Get MED version of the file by its name.
349 boolean GetMEDVersion(in string theFileName, out MED_VERSION theVersion);
352 * \brief Get names of meshes defined in file with the specified name.
354 string_array GetMeshNames(in string theFileName);