Salome HOME
Merge from V6_main 13/12/2012
[modules/hexablock.git] / idl / Document.idl
1 // Copyright (C) 2009-2012  CEA/DEN, EDF R&D
2 //
3 // This library is free software; you can redistribute it and/or
4 // modify it under the terms of the GNU Lesser General Public
5 // License as published by the Free Software Foundation; either
6 // version 2.1 of the License.
7 //
8 // This library is distributed in the hope that it will be useful,
9 // but WITHOUT ANY WARRANTY; without even the implied warranty of
10 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
11 // Lesser General Public License for more details.
12 //
13 // You should have received a copy of the GNU Lesser General Public
14 // License along with this library; if not, write to the Free Software
15 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
16 //
17 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
18 //
19 #ifndef __Document_idl__
20 #define __Document_idl__
21 /*!
22  \defgroup EXAMPLES SALOME EXAMPLES components
23  */
24 #include "SALOME_Exception.idl"
25 #include "SALOME_GenericObj.idl"
26
27 #include "GEOM_Gen.idl"
28
29 #include "Edge.idl"
30 #include "Hexa.idl"
31
32 /*!  \ingroup EXAMPLES
33
34 This package contains the interface HEXABLOCK_ORB used
35 for  %HEXABLOCK component as an example in %SALOME application.
36 */
37 module HEXABLOCK_ORB
38 {
39
40   interface Element;
41   interface Vertex;
42   interface Edge;
43   interface Quad;
44   interface Hexa;
45   interface Vector;
46   interface Cylinder;
47   interface Pipe;
48   interface Elements;
49   interface CrossElements;
50   interface Law;
51   interface Group;
52   interface Propagation;
53
54   interface NewShape;
55
56   typedef sequence<Quad>     Quads;
57   typedef sequence<long>     IntVector;
58   typedef sequence<double>   RealVector;
59   typedef sequence<NewShape> NewShapes;
60
61   typedef GEOM::GEOM_Object  Shape;
62   typedef sequence<GEOM::GEOM_Object>  Shapes;
63
64   interface Document : SALOME::GenericObj
65   {
66     void purge()
67       raises (SALOME::SALOME_Exception);
68
69     void dump()
70       raises (SALOME::SALOME_Exception); //CS_NOT_SPEC
71     /*!
72     */
73     string getName()
74       raises (SALOME::SALOME_Exception);
75
76     long setName (in string name )
77       raises (SALOME::SALOME_Exception);
78
79     long save( in string fileName )
80       raises (SALOME::SALOME_Exception);
81
82     long saveVtk( in string fname );
83
84     void setLevel (in long debug_level )
85       raises (SALOME::SALOME_Exception);
86
87
88     /*!
89     */
90     void setTolerance( in double tol ) raises (SALOME::SALOME_Exception);
91     double getTolerance() raises (SALOME::SALOME_Exception);
92
93     /*!
94         Sommets
95     */
96     Vertex addVertex( in double x, in double y, in double z )
97         raises (SALOME::SALOME_Exception);
98
99     long countVertex()
100         raises (SALOME::SALOME_Exception);
101
102     Vertex getVertex( in long i )
103         raises (SALOME::SALOME_Exception);
104
105     Vertex findVertex( in double x, in double y, in double z )
106         raises (SALOME::SALOME_Exception);
107
108
109     /*!
110         Aretes
111     */
112     Edge addEdge( in Vertex v0, in Vertex v1 )
113         raises (SALOME::SALOME_Exception);
114
115     Edge addEdgeVector ( in Vertex v0, in Vector w1 )
116         raises (SALOME::SALOME_Exception);
117
118     long countEdge()
119         raises (SALOME::SALOME_Exception);
120
121     Edge getEdge( in long i )
122         raises (SALOME::SALOME_Exception);
123
124     Edge findEdge( in Vertex p1, in Vertex p2 )
125         raises (SALOME::SALOME_Exception);
126
127
128     /*!
129         Quadrangles
130     */
131     Quad addQuad( in Edge e0, in Edge e1, in Edge e2, in Edge e3 )
132         raises (SALOME::SALOME_Exception);
133
134     Quad addQuadVertices( in Vertex v0, in Vertex v1, in Vertex v2, in Vertex v3 )
135         raises (SALOME::SALOME_Exception);
136
137     long countQuad()
138         raises (SALOME::SALOME_Exception);
139
140     Quad getQuad( in long i )
141         raises (SALOME::SALOME_Exception);
142
143     Quad findQuad( in Vertex v1, in Vertex v2 )
144         raises (SALOME::SALOME_Exception);
145
146
147
148     /*!
149         Hexaedre
150     */
151     Hexa addHexa( in Quad q0, in Quad q1, in Quad q2, in Quad q3, in Quad q4, in Quad q5 )
152         raises (SALOME::SALOME_Exception);
153
154     Hexa addHexaVertices( in Vertex v1, in Vertex v2, in Vertex v3, in Vertex v4,
155                   in Vertex v5, in Vertex v6, in Vertex v7, in Vertex v8 )
156         raises (SALOME::SALOME_Exception);
157
158     long countHexa()
159         raises (SALOME::SALOME_Exception);
160
161     Hexa getHexa( in long i )
162         raises (SALOME::SALOME_Exception);
163
164     Hexa findHexa( in Vertex p1, in Vertex p2 )
165         raises (SALOME::SALOME_Exception);
166
167
168
169     /*!
170         Vecteurs
171     */
172     Vector addVector( in double dx, in double dy, in double dz )
173         raises (SALOME::SALOME_Exception);
174
175     Vector addVectorVertices( in Vertex v1, in Vertex v2 )
176         raises (SALOME::SALOME_Exception);
177
178     long countVector()
179          raises (SALOME::SALOME_Exception);
180
181     Vector getVector( in long i )
182            raises (SALOME::SALOME_Exception);
183
184
185     /*!
186         Cylindre
187     */
188     Cylinder addCylinder( in Vertex base, in Vector direction, in double radius, in double height )
189         raises (SALOME::SALOME_Exception);
190
191     long countCylinder()
192          raises (SALOME::SALOME_Exception);
193
194     Cylinder getCylinder( in long i )
195              raises (SALOME::SALOME_Exception);
196
197
198     /*!
199         Pipe
200     */
201     Pipe addPipe( in Vertex base, in Vector direction,
202                   in double int_radius, in double ext_radius,
203                   in double height )
204         raises (SALOME::SALOME_Exception);
205
206      long countPipe()
207           raises (SALOME::SALOME_Exception);
208
209      Pipe getPipe( in long i )
210           raises (SALOME::SALOME_Exception);
211
212
213     /*!
214         Remove block
215     */
216     boolean removeHexa( in Hexa h )
217         raises (SALOME::SALOME_Exception);
218
219     boolean removeConnectedHexa( in Hexa h )
220         raises (SALOME::SALOME_Exception);
221
222    /*!
223        Grille cartesiennes
224    */
225     Elements makeCartesian( in Vertex pt,
226             in Vector vx, in Vector vy, in Vector vz,
227             in long nx, in long ny, in long nz)
228         raises (SALOME::SALOME_Exception);
229
230     Elements makeCartesian1( in Vertex v,
231             in Vector v1,
232             in long px, in long py, in long pz,
233             in long mx, in long my, in long mz )
234         raises (SALOME::SALOME_Exception);
235
236     /*!
237         Grille cylindrique
238     */
239     Elements makeCylindrical( in Vertex pt,
240           in Vector vex, in Vector vez,
241           in double dr, in double da, in double dl,
242           in long nr, in long na, in long nl,
243           in boolean fill )
244         raises (SALOME::SALOME_Exception);
245
246     /*!
247         Grille cylindrique (variante)
248     */
249     Elements makeCylindricals( in Vertex pt,
250           in Vector vex, in Vector vez,
251           in RealVector tdr, in RealVector tda, in RealVector tdl,
252           in boolean fill )
253         raises (SALOME::SALOME_Exception);
254
255     /*!
256         Grille spherique
257     */
258
259     Elements makeSpherical( in Vertex pt,
260         in double rayon,
261         in long n,
262         in double k )
263         raises (SALOME::SALOME_Exception);
264
265
266     /*!
267         Cylindre decoupe en blocs
268     */
269 //     Elements makeCylinder( in Cylinder cyl, in long nr, in long na, in long nl )
270 //         raises (SALOME::SALOME_Exception);//CS_TODO
271     Elements makeCylinder( in Cylinder cyl, in Vector vr, in long nr, in long na, in long nl )
272         raises (SALOME::SALOME_Exception);//CS_NEW CS_NOT_SPEC
273
274
275     /*!
276         Tuyau decoupe en blocs
277     */
278     Elements makePipe( in Pipe p, in Vector v, in long nr, in long na, in long nl )
279         raises (SALOME::SALOME_Exception);
280
281     /*!
282         2 Cylindres en T decoupes en blocs
283     */
284     CrossElements makeCylinders( in Cylinder c1, in Cylinder c2 )
285       raises (SALOME::SALOME_Exception);
286
287     /*!
288         2 Tuyau decoupe en intersection decoupees en blocs
289     */
290     CrossElements makePipes( in Pipe p1, in Pipe p2 )
291         raises (SALOME::SALOME_Exception);
292
293     /*!
294         Prismer des quadrangles
295     */
296     Elements prismQuad( in Quad qd, in Vector v, in long nb )
297         raises (SALOME::SALOME_Exception);
298
299     Elements prismQuads( in Quads qds, in Vector v, in long nb )
300         raises (SALOME::SALOME_Exception);
301
302     Elements prismQuadsVec (in Quads qds, in Vector v, in RealVector thaut,
303                             in long opt )
304         raises (SALOME::SALOME_Exception);
305
306     Elements joinQuad( in Quad qa, in Quad qb,
307                        in Vertex va1, in Vertex vb1,
308                        in Vertex va2, in Vertex vb2,
309                        in long nb )
310         raises (SALOME::SALOME_Exception);
311
312     Elements joinQuads( in Quads qds,
313                         in Quad qb,
314                         in Vertex va1, in Vertex vb1,
315                         in Vertex va2, in Vertex vb2,
316                         in long nb )
317         raises (SALOME::SALOME_Exception);
318
319                 // HexaBlock V3
320     Elements revolutionQuads( in Quads qds, in Vertex ori, in Vector dir,
321                               in RealVector angles)
322         raises (SALOME::SALOME_Exception);
323
324     Elements replace( in Quads qds, in Vertex p1, in Vertex c1,
325                       in Vertex p2, in Vertex c2, in Vertex p3, in Vertex c3)
326         raises (SALOME::SALOME_Exception);
327
328     Elements makeSphere (in Vertex center, in Vector vx, in Vector vz,
329                          in double radius, in double radhole,
330                          in Vertex plorig,
331                          in long nrad, in long nang, in long nhaut)
332         raises (SALOME::SALOME_Exception);
333
334     Elements makePartSphere (in Vertex center, in Vector vx, in Vector vz,
335                              in double  radius, in double radhole,
336                              in Vertex plorig, in double angle,
337                              in long nrad, in long nang, in long nhaut)
338         raises (SALOME::SALOME_Exception);
339
340     Elements makeRind (in Vertex center, in Vector vx, in Vector vz,
341                        in double  radext, in double radint, in double radhole,
342                        in Vertex plorig,
343                        in long nrad, in long nang, in long nhaut)
344         raises (SALOME::SALOME_Exception);
345
346     Elements makePartRind (in Vertex center, in Vector vx, in Vector vz,
347                          in double  radext, in double radint, in double radhole,
348                          in Vertex plorig, in double angle,
349                          in long nrad, in long nang, in long nhaut)
350         raises (SALOME::SALOME_Exception);
351 //
352 //
353 //     /*!
354 //         Fusionner 2 elements de meme nature //CS_NOT_SPEC
355 //     */
356
357 //     Elements mergeQuads( in Quad qa, in Quad qb,
358 //                         in Vertex va1, in Vertex vb1,
359 //                         in Vertex va2, in Vertex vb2 )
360 //         raises (SALOME::SALOME_Exception);
361
362     long mergeQuads( in Quad qa, in Quad qb,
363                         in Vertex va1, in Vertex vb1,
364                         in Vertex va2, in Vertex vb2 )
365         raises (SALOME::SALOME_Exception);//CS_NOT_SPEC //CS_NEW
366
367 //
368 //     Elements mergeEdges( in Edge e1, in Edge e2,
369 //                         in Vertex v1, in Vertex v2 )
370 //         raises (SALOME::SALOME_Exception);
371
372     long mergeEdges( in Edge e1, in Edge e2,
373                         in Vertex v1, in Vertex v2 )
374         raises (SALOME::SALOME_Exception);//CS_NOT_SPEC //CS_NEW
375
376 //     Elements mergeVertices( in Vertex v1, in Vertex v2 )
377 //         raises (SALOME::SALOME_Exception);
378     long mergeVertices( in Vertex v1, in Vertex v2 )
379         raises (SALOME::SALOME_Exception);//CS_NOT_SPEC //CS_NEW
380
381
382     /*!
383         Deconnecter des elements du modele
384     */
385     Elements disconnectQuad( in Hexa h, in Quad q )
386         raises (SALOME::SALOME_Exception);
387
388     Elements disconnectEdge( in Hexa h, in Edge e )
389         raises (SALOME::SALOME_Exception);
390
391     Elements disconnectVertex( in Hexa h,  in Vertex v )
392         raises (SALOME::SALOME_Exception);
393
394     Elements disconnectEdges( in Hexas th, in Edges te )
395         raises (SALOME::SALOME_Exception);
396
397     /*!
398         Couper des hexaedres du modele
399     */
400     Elements cut( in Edge e, in long nb_of_cuts )
401         raises (SALOME::SALOME_Exception);
402
403     /*!
404         Make elements by transforming elements
405     */
406 //     Elements makeTranslation( in Elements e, in Vector vec )
407 //         raises (SALOME::SALOME_Exception);
408     Elements makeTranslation( in Elements l, in Vector vec )
409         raises (SALOME::SALOME_Exception);
410 //
411 //
412     Elements makeRotation (in Elements l, in Vertex ver, in Vector vec, in double angle)
413         raises (SALOME::SALOME_Exception);
414     Elements makeScale (in Elements e, in Vertex ver, in double k )
415         raises (SALOME::SALOME_Exception);
416
417     Elements makeSymmetryPoint (in Elements e, in Vertex ver)
418         raises (SALOME::SALOME_Exception);
419
420     Elements makeSymmetryLine (in Elements e, in Vertex ver, in Vector vec)
421         raises (SALOME::SALOME_Exception);
422
423     Elements makeSymmetryPlane (in Elements e, in Vertex ver, in Vector vec)
424         raises (SALOME::SALOME_Exception);
425
426     /*!
427     Modify elements by transforming elements
428     */
429 //     void performTranslation(in Elements e, in Vector vec)
430 //         raises (SALOME::SALOME_Exception);
431
432     void performTranslation(in Elements l, in Vector vec)
433         raises (SALOME::SALOME_Exception);
434 //
435     void performRotation(in Elements l, in Vertex ver, in Vector vec, in double angle)
436         raises (SALOME::SALOME_Exception);
437 //
438     void performScale(in Elements e, in Vertex ver, in double k)
439         raises (SALOME::SALOME_Exception);
440
441     void performSymmetryPoint(in Elements e, in Vertex ver)
442         raises (SALOME::SALOME_Exception);
443
444     void performSymmetryLine(in Elements e, in Vertex ver, in Vector vec)
445         raises (SALOME::SALOME_Exception);
446
447     void performSymmetryPlane(in Elements e, in Vertex ver, in Vector vec)
448         raises (SALOME::SALOME_Exception);
449 //
450 //     /*!
451 //                     --------
452 //                     MAILLAGE
453 //                     --------
454 //     */
455 //
456 //     /*!
457 //         Creer, editer et supprimer un groupe
458 //     */
459 //     HexaGroup addHexaGroup( in string name )
460     Group addHexaGroup( in string name )
461         raises (SALOME::SALOME_Exception);
462
463 //     QuadGroup addQuadGroup( in string name )
464     Group addQuadGroup( in string name )
465         raises (SALOME::SALOME_Exception);
466
467 //     EdgeGroup addEdgeGroup( in string name )
468     Group addEdgeGroup( in string name )
469         raises (SALOME::SALOME_Exception);
470
471 //     HexaNodeGroup addHexaNodeGroup( in string name )
472     Group addHexaNodeGroup( in string name )
473         raises (SALOME::SALOME_Exception);
474
475 //     QuadNodeGroup addQuadNodeGroup( in string name )
476     Group addQuadNodeGroup( in string name )
477         raises (SALOME::SALOME_Exception);
478
479 //     EdgeNodeGroup addEdgeNodeGroup( in string name )
480     Group addEdgeNodeGroup( in string name )
481         raises (SALOME::SALOME_Exception);
482
483 //     VertexNodeGroup addVertexNodeGroup( in string name )
484     Group addVertexNodeGroup( in string name )
485         raises (SALOME::SALOME_Exception);
486
487     long removeGroup( in Group g)
488         raises (SALOME::SALOME_Exception);
489
490     long countGroup()
491       raises (SALOME::SALOME_Exception);
492
493     Group getGroup( in long i )
494       raises (SALOME::SALOME_Exception);
495
496     Group findGroup( in string name )
497       raises (SALOME::SALOME_Exception);
498
499
500
501     /*!
502         Definir une loi de discretisation
503     */
504     Law addLaw( in string name, in long nb_nodes )
505         raises (SALOME::SALOME_Exception);
506
507     long countLaw()
508         raises (SALOME::SALOME_Exception);
509
510     Law getLaw( in long i )
511       raises (SALOME::SALOME_Exception);
512
513     void removeLaw( in Law l )
514         raises (SALOME::SALOME_Exception);
515
516     Law findLaw( in string name )
517       raises (SALOME::SALOME_Exception);
518
519
520     /*!
521         Discretization defined on the model of blocks
522     */
523     long countPropagation()
524         raises (SALOME::SALOME_Exception);
525
526     Propagation getPropagation( in long i )
527         raises (SALOME::SALOME_Exception);
528
529     Propagation findPropagation( in Edge e )
530         raises (SALOME::SALOME_Exception);
531
532     /*!
533         Association on lines
534     */
535 //       Shape
536
537 //       Ajouts 05/09/20011
538
539     long countUsedVertex()
540         raises (SALOME::SALOME_Exception);
541     long countUsedEdge()
542         raises (SALOME::SALOME_Exception);
543     long countUsedQuad()
544         raises (SALOME::SALOME_Exception);
545     long countUsedHexa()
546         raises (SALOME::SALOME_Exception);
547
548     Vertex getUsedVertex( in long i )
549         raises (SALOME::SALOME_Exception);
550     Edge getUsedEdge( in long i )
551         raises (SALOME::SALOME_Exception);
552     Quad getUsedQuad( in long i )
553         raises (SALOME::SALOME_Exception);
554     Hexa getUsedHexa( in long i )
555         raises (SALOME::SALOME_Exception);
556
557     Hexa addHexa5Quads (in Quad q1, in Quad q2, in Quad q3, in Quad q4,
558                         in Quad q5) raises (SALOME::SALOME_Exception);
559     Hexa addHexa4Quads ( in Quad q1, in Quad q2, in Quad q3, in Quad q4)
560          raises (SALOME::SALOME_Exception);
561     Hexa addHexa3Quads ( in Quad q1, in Quad q2, in Quad q3)
562          raises (SALOME::SALOME_Exception);
563     Hexa addHexa2Quads ( in Quad q1, in Quad q2)
564          raises (SALOME::SALOME_Exception);
565
566     boolean removeQuad( in Quad q )
567         raises (SALOME::SALOME_Exception);//CS_NOT_SPEC
568     boolean removeElements( in Elements b )
569         raises (SALOME::SALOME_Exception);
570
571     void clearAssociation ()
572       raises (SALOME::SALOME_Exception);
573
574                     // Hexa 5
575
576     NewShape addShape (in GEOM::GEOM_Object geometry, in string name)
577              raises   (SALOME::SALOME_Exception);
578
579     NewShape getShape (in long nro) raises (SALOME::SALOME_Exception);
580
581     long countShape ()
582          raises (SALOME::SALOME_Exception);
583
584     long associateOpenedLine (in Edges  mlines,
585                               in Shapes glines, in IntVector subids,
586                               in double pstart, in double    pend)
587         raises (SALOME::SALOME_Exception);
588
589     long associateClosedLine (in Vertex mfirst, in Edges     mlines,
590                               in Shapes glines, in IntVector subids,
591                               in double pstart, in boolean   inv)
592         raises (SALOME::SALOME_Exception);
593     /*!
594         2 Cylindres en T decoupes en blocs    (Hexa5)
595     */
596     Elements makeBiCylinder ( in Cylinder c1, in Cylinder c2 )
597                raises (SALOME::SALOME_Exception);
598
599     /*!
600         2 Tuyau decoupe en intersection decoupees en blocs    (Hexa5)
601     */
602     Elements makeBiPipe ( in Pipe p1, in Pipe p2 )
603                raises (SALOME::SALOME_Exception);
604   };
605 };
606
607
608 #endif
609