Salome HOME
Distributed Geom, Smesh. Modifications by Anthony GEAY.
[modules/smesh.git] / idl / SMESH_Gen.idl
1 //  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
2 //  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
3 // 
4 //  This library is free software; you can redistribute it and/or 
5 //  modify it under the terms of the GNU Lesser General Public 
6 //  License as published by the Free Software Foundation; either 
7 //  version 2.1 of the License. 
8 // 
9 //  This library is distributed in the hope that it will be useful, 
10 //  but WITHOUT ANY WARRANTY; without even the implied warranty of 
11 //  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
12 //  Lesser General Public License for more details. 
13 // 
14 //  You should have received a copy of the GNU Lesser General Public 
15 //  License along with this library; if not, write to the Free Software 
16 //  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
17 // 
18 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
19 //
20 //
21 //
22 //  File   : SMESH_Gen.idl
23 //  Author : Paul RASCLE, EDF
24 //  $Header$
25
26 #ifndef _SMESH_GEN_IDL_
27 #define _SMESH_GEN_IDL_
28
29 #include "SALOME_Exception.idl"
30 #include "SALOME_Component.idl"
31 #include "SALOMEDS.idl"
32
33 #include "GEOM_Gen.idl"
34
35 #include "SMESH_Mesh.idl"
36 #include "SMESH_Hypothesis.idl"
37
38 module SMESH
39 {
40   typedef sequence<GEOM::GEOM_Object> object_array;
41   typedef sequence<SMESH_Mesh>        mesh_array;
42
43   interface FilterManager;
44   interface SMESH_Pattern;
45
46   /*!
47    * Hypothesis definintion error
48    */
49   struct AlgoStateError 
50   {
51     Hypothesis_Status  state;
52     string             algoName;
53     long               algoDim;
54     boolean            isGlobalAlgo;
55   };
56   typedef sequence<AlgoStateError> algo_error_array;
57
58   /*!
59    * Mesh computation error
60    */
61   enum ComputeErrorName
62   {
63     COMPERR_OK            ,
64     COMPERR_BAD_INPUT_MESH,  // wrong mesh on lower submesh
65     COMPERR_STD_EXCEPTION ,  // some std exception raised
66     COMPERR_OCC_EXCEPTION ,  // OCC exception raised
67     COMPERR_SLM_EXCEPTION ,  // SALOME exception raised
68     COMPERR_EXCEPTION     ,  // other exception raised
69     COMPERR_MEMORY_PB     ,  // memory allocation problem
70     COMPERR_ALGO_FAILED   ,  // computation failed
71     COMPERR_BAD_SHAPE        // bad geometry
72   };
73   struct ComputeError
74   {
75     short  code;       // ComputeErrorName or, if negative, algo specific code
76     string comment;    // textual problem description
77     string algoName;
78     short  subShapeID; // id of subshape of a shape to mesh
79   };
80   typedef sequence<ComputeError> compute_error_array;
81
82
83   interface SMESH_Gen : Engines::Component, SALOMEDS::Driver
84   {
85
86     //GEOM::GEOM_Gen SetGeomEngine( in string containerLoc );
87     void SetGeomEngine( in GEOM::GEOM_Gen geomcompo );
88
89     FilterManager CreateFilterManager();
90
91     SMESH_Pattern GetPattern();
92
93     /*!
94       Set the current mode
95      */
96     void SetEmbeddedMode( in boolean theMode );
97
98     /*!
99       Get the current mode
100      */
101     boolean IsEmbeddedMode();
102
103     /*!
104       Set the current study
105      */
106     void SetCurrentStudy( in SALOMEDS::Study theStudy );
107
108     /*!
109       Get the current study
110      */
111     SALOMEDS::Study GetCurrentStudy();
112
113     /*!
114      * Create a hypothesis that can be shared by differents parts of the mesh.
115      * An hypothesis is either:
116      * - a method used to generate or modify a part of the mesh (algorithm).
117      * - a parameter or a law used by an algorithm.
118      * Algorithms are 1D, 2D or 3D.
119      */
120     SMESH_Hypothesis CreateHypothesis( in string theHypName,
121                                        in string theLibName )
122       raises ( SALOME::SALOME_Exception );
123
124     /*!
125      * Return a hypothesis holding parameter values corresponding to the mesh
126      * existing on the given geometry.
127      * The returned hypothesis may be the one existing in a study and used
128      * to compute the mesh, or a temporary one created just to pass parameter
129      * values
130      */
131     SMESH_Hypothesis GetHypothesisParameterValues( in string            theHypName,
132                                                    in string            theLibName,
133                                                    in SMESH_Mesh        theMesh,
134                                                    in GEOM::GEOM_Object theGeom)
135       raises ( SALOME::SALOME_Exception );
136
137     /*!
138      * Create a Mesh object, given a geometry shape.
139      * Mesh is created empty (no points, no elements).
140      * Shape is explored via GEOM_Client to create local copies.
141      * of TopoDS_Shapes and bind CORBA references of shape & subshapes
142      * with TopoDS_Shapes
143      */
144     SMESH_Mesh CreateMesh( in GEOM::GEOM_Object theObject )
145       raises ( SALOME::SALOME_Exception );
146     
147     /*!
148      * Create a empty mesh object
149      */
150     SMESH_Mesh CreateEmptyMesh()
151       raises ( SALOME::SALOME_Exception );
152     
153     /*!
154      * Create Mesh object importing data from given UNV file
155      * (UNV supported version is I-DEAS 10)
156      */
157     SMESH_Mesh CreateMeshesFromUNV( in string theFileName )
158       raises ( SALOME::SALOME_Exception );
159
160     /*!
161      * Create Mesh object(s) importing data from given MED file
162      */
163      mesh_array CreateMeshesFromMED( in string theFileName,
164                                      out SMESH::DriverMED_ReadStatus theStatus )
165        raises ( SALOME::SALOME_Exception );
166
167     /*!
168      * Create Mesh object importing data from given STL file
169      */
170     SMESH_Mesh CreateMeshesFromSTL( in string theFileName )
171       raises ( SALOME::SALOME_Exception );
172
173     /*!
174      * Create a Mesh object, without a geometry shape reference
175      */
176 //      SMESH_Mesh NewEmpty()
177 //        raises ( SALOME::SALOME_Exception );
178
179     /*!
180      * Mesh a subShape. 
181      * First, verify list of hypothesis associated with the subShape,
182      * return NOK if hypothesis are not sufficient
183      */
184     boolean Compute( in SMESH_Mesh        theMesh, 
185                      in GEOM::GEOM_Object theSubObject )
186       raises ( SALOME::SALOME_Exception );
187
188     /*!
189      * Return true if hypotheses are defined well
190      */
191     boolean IsReadyToCompute( in SMESH_Mesh        theMesh, 
192                               in GEOM::GEOM_Object theSubObject )
193       raises ( SALOME::SALOME_Exception );
194
195     /*!
196      * Return errors of hypotheses definintion
197      * algo_error_array is empty if everything is OK
198      */
199     algo_error_array GetAlgoState( in SMESH_Mesh        theMesh, 
200                                    in GEOM::GEOM_Object theSubObject )
201       raises ( SALOME::SALOME_Exception );
202
203     /*!
204      * Return errors of mesh computation
205      * compute_error_array is empty if everything is OK
206      */
207     compute_error_array GetComputeErrors( in SMESH_Mesh        theMesh, 
208                                           in GEOM::GEOM_Object theSubObject )
209       raises ( SALOME::SALOME_Exception );
210
211     /*!
212      * Return indeces of faces, edges and vertices of given subshapes
213      * within theMainObject
214      */
215     long_array GetSubShapesId( in GEOM::GEOM_Object theMainObject,
216                                in object_array      theListOfSubObjects )
217        raises ( SALOME::SALOME_Exception );
218
219     /*!
220      * Return geometrical object the given element is built on.
221      * The returned geometrical object, if not nil, is either found in the 
222      * study or is published by this method with the given name
223      */
224     GEOM::GEOM_Object GetGeometryByMeshElement( in SMESH_Mesh  theMesh,
225                                                 in long        theElementID,
226                                                 in string      theGeomName)
227       raises ( SALOME::SALOME_Exception );
228
229     /*!
230      * Return geometrical object the given element is built on.
231      * The returned geometrical object not published in study by this method.
232      */
233     GEOM::GEOM_Object FindGeometryByMeshElement( in SMESH_Mesh  theMesh,
234                                                  in long        theElementID)
235       raises ( SALOME::SALOME_Exception );
236
237     /*!
238      * Concatenate the given meshes into one mesh.
239      * Union groups with the same name and type if
240      * theUniteIdenticalGroups flag is true.
241      * Merge coincident nodes and elements if 
242      * theMergeNodesAndElements flag is true.
243      */
244     SMESH_Mesh Concatenate(in mesh_array theMeshesArray, 
245                            in boolean    theUniteIdenticalGroups, 
246                            in boolean    theMergeNodesAndElements, 
247                            in double     theMergeTolerance)
248       raises ( SALOME::SALOME_Exception );
249
250   };
251
252 };
253
254 #endif