Salome HOME
61bc4628b3d7eb813bf0756899fa351a84c95a14
[modules/geom.git] / idl / AdvancedGEOM.idl
1 // Copyright (C) 2007-2023  CEA/DEN, EDF R&D, OPEN CASCADE
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, or (at your option) any later version.
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 //  File   : AdvancedGEOM.idl
20 //  Author : Roman NIKOLAEV
21
22 #ifndef __AdvancedGEOM_IDL__
23 #define __AdvancedGEOM_IDL__
24
25 #include "GEOM_Gen.idl"
26
27 module GEOM
28 {
29  /*!
30    * \brief Pattern for block division of the disk
31    */
32   enum pattern {
33     /*! Square */
34     SQUARE,
35     /*! Hexagon */
36     HEXAGON
37   };
38
39   /*!
40    *  \brief Interface for advanced modeling functions.
41    */
42   interface IAdvancedOperations : GEOM::GEOM_IOperations
43   {
44     // T-Shape WITHOUT Thickness reduction
45
46     /*!
47      *  \brief Create a T-shape object with specified caracteristics for the main and
48      *  the incident pipes (radius, width, half-length).
49      *
50      *  Center of the shape is (0,0,0). The main plane of the T-shape is XOY.
51      *  \param theR1 Internal radius of main pipe
52      *  \param theW1 Width of main pipe
53      *  \param theL1 Half-length of main pipe
54      *  \param theR2 Internal radius of incident pipe (R2 < R1)
55      *  \param theW2 Width of incident pipe (R2+W2 < R1+W1)
56      *  \param theL2 Half-length of incident pipe
57      *  \param theHexMesh Boolean indicating if shape is prepared for hex mesh (default=true)
58      *  \return List of GEOM_Object, containing the created shape and propagation groups.
59      */
60     GEOM::ListOfGO MakePipeTShape (in double theR1, in double theW1, in double theL1,
61                                    in double theR2, in double theW2, in double theL2,
62                                    in boolean theHexMesh);
63     /*!
64      *  \brief Create a T-shape object with specified caracteristics for the main and
65      *  the incident pipes (radius, width, half-length).
66      *
67      *  The extremities of the main pipe are located on junctions points P1 and P2.
68      *  The extremity of the incident pipe is located on junction point P3.
69      *  \param theR1 Internal radius of main pipe
70      *  \param theW1 Width of main pipe
71      *  \param theL1 Half-length of main pipe
72      *  \param theR2 Internal radius of incident pipe (R2 < R1)
73      *  \param theW2 Width of incident pipe (R2+W2 < R1+W1)
74      *  \param theL2 Half-length of incident pipe
75      *  \param theHexMesh Boolean indicating if shape is prepared for hex mesh (default=true)
76      *  \param theP1 1st junction point of main pipe
77      *  \param theP2 2nd junction point of main pipe
78      *  \param theP3 Junction point of incident pipe
79      *  \return List of GEOM_Object, containing the created shape and propagation groups.
80      */
81     GEOM::ListOfGO MakePipeTShapeWithPosition (in double theR1, in double theW1, in double theL1,
82                                                in double theR2, in double theW2, in double theL2,
83                                                in boolean theHexMesh,
84                                                in GEOM::GEOM_Object theP1, in GEOM::GEOM_Object theP2, 
85                                                in GEOM::GEOM_Object theP3);
86     /*!
87      *  \brief Create a T-shape object with specified caracteristics for the main and
88      *  the incident pipes (radius, width, half-length). A chamfer is created
89      *  on the junction of the pipes.
90      *  
91      *  Center of the shape is (0,0,0). The main plane of the T-shape is XOY.
92      *  \param theR1 Internal radius of main pipe
93      *  \param theW1 Width of main pipe
94      *  \param theL1 Half-length of main pipe
95      *  \param theR2 Internal radius of incident pipe (R2 < R1)
96      *  \param theW2 Width of incident pipe (R2+W2 < R1+W1)
97      *  \param theL2 Half-length of incident pipe
98      *  \param theH Height of the chamfer.
99      *  \param theW Width of the chamfer.
100      *  \param theHexMesh Boolean indicating if shape is prepared for hex mesh (default=true)
101      *  \return List of GEOM_Object, containing the created shape and propagation groups.
102      */
103     GEOM::ListOfGO MakePipeTShapeChamfer (in double theR1, in double theW1, in double theL1,
104                                           in double theR2, in double theW2, in double theL2,
105                                           in double theH, in double theW, in boolean theHexMesh);
106     /*!
107      *  \brief Create a T-shape object with specified caracteristics for the main and
108      *  the incident pipes (radius, width, half-length). 
109      * 
110      *  A chamfer is created on the junction of the pipes.
111      *  The extremities of the main pipe are located on junctions points P1 and P2.
112      *  The extremity of the incident pipe is located on junction point P3.
113      *  \param theR1 Internal radius of main pipe
114      *  \param theW1 Width of main pipe
115      *  \param theL1 Half-length of main pipe
116      *  \param theR2 Internal radius of incident pipe (R2 < R1)
117      *  \param theW2 Width of incident pipe (R2+W2 < R1+W1)
118      *  \param theL2 Half-length of incident pipe
119      *  \param theH Height of the chamfer.
120      *  \param theW Width of the chamfer.
121      *  \param theHexMesh Boolean indicating if shape is prepared for hex mesh (default=true)
122      *  \param theP1 1st junction point of main pipe
123      *  \param theP2 2nd junction point of main pipe
124      *  \param theP3 Junction point of incident pipe
125      *  \return List of GEOM_Object, containing the created shape and propagation groups.
126      */
127     GEOM::ListOfGO MakePipeTShapeChamferWithPosition (in double theR1, in double theW1, in double theL1,
128                                                       in double theR2, in double theW2, in double theL2,
129                                                       in double theH, in double theW, in boolean theHexMesh,
130                                                       in GEOM::GEOM_Object theP1, in GEOM::GEOM_Object theP2, 
131                                                       in GEOM::GEOM_Object theP3);
132     /*!
133      *  \brief Create a T-shape object with specified caracteristics for the main and
134      *  the incident pipes (radius, width, half-length). 
135      *
136      *  A fillet is created on the junction of the pipes.
137      *  Center of the shape is (0,0,0). The main plane of the T-shape is XOY.
138      *  \param theR1 Internal radius of main pipe
139      *  \param theW1 Width of main pipe
140      *  \param theL1 Half-length of main pipe
141      *  \param theR2 Internal radius of incident pipe (R2 < R1)
142      *  \param theW2 Width of incident pipe (R2+W2 < R1+W1)
143      *  \param theL2 Half-length of incident pipe
144      *  \param theRF Radius of curvature of fillet.
145      *  \param theHexMesh Boolean indicating if shape is prepared for hex mesh (default=true)
146      *  \return List of GEOM_Object, containing the created shape and propagation groups.
147      */
148     GEOM::ListOfGO MakePipeTShapeFillet (in double theR1, in double theW1, in double theL1,
149                                          in double theR2, in double theW2, in double theL2,
150                                          in double theRF, in boolean theHexMesh);
151     /*!
152      *  \brief Create a T-shape object with specified caracteristics for the main and
153      *  the incident pipes (radius, width, half-length).
154      *
155      *  A fillet is created on the junction of the pipes.
156      *  The extremities of the main pipe are located on junctions points P1 and P2.
157      *  The extremity of the incident pipe is located on junction point P3.
158      *  \param theR1 Internal radius of main pipe
159      *  \param theW1 Width of main pipe
160      *  \param theL1 Half-length of main pipe
161      *  \param theR2 Internal radius of incident pipe (R2 < R1)
162      *  \param theW2 Width of incident pipe (R2+W2 < R1+W1)
163      *  \param theL2 Half-length of incident pipe
164      *  \param theRF Radius of curvature of fillet.
165      *  \param theHexMesh Boolean indicating if shape is prepared for hex mesh (default=true)
166      *  \param theP1 1st junction point of main pipe
167      *  \param theP2 2nd junction point of main pipe
168      *  \param theP3 Junction point of incident pipe
169      *  \return List of GEOM_Object, containing the created shape and propagation groups.
170      */
171     GEOM::ListOfGO MakePipeTShapeFilletWithPosition (in double theR1, in double theW1, in double theL1,
172                                                      in double theR2, in double theW2, in double theL2,
173                                                      in double theRF, in boolean theHexMesh,
174                                                      in GEOM::GEOM_Object theP1, in GEOM::GEOM_Object theP2, 
175                                                      in GEOM::GEOM_Object theP3);
176
177     // T-Shape WITH Thickness reduction
178
179     /*!
180      *  \brief Create a T-shape object with specified caracteristics for the main and
181      *  the incident pipes (radius, width, half-length).
182      *
183      *  Center of the shape is (0,0,0). The main plane of the T-shape is XOY.
184      *  \param theR1 Internal radius of main pipe
185      *  \param theW1 Width of main pipe
186      *  \param theL1 Half-length of main pipe
187      *  \param theR2 Internal radius of incident pipe (R2 < R1)
188      *  \param theW2 Width of incident pipe (R2+W2 < R1+W1)
189      *  \param theL2 Half-length of incident pipe
190      *
191      *  \param theRL Internal radius of left thickness reduction
192      *  \param theWL Width of left thickness reduction
193      *  \param theLtransL Length of left transition part
194      *  \param theLthinL Length of left thin part
195      *
196      *  \param theRR Internal radius of right thickness reduction
197      *  \param theWR Width of right thickness reduction
198      *  \param theLtransR Length of right transition part
199      *  \param theLthinR Length of right thin part
200      *
201      *  \param theRI Internal radius of incident thickness reduction
202      *  \param theWI Width of incident thickness reduction
203      *  \param theLtransI Length of incident transition part
204      *  \param theLthinI Length of incident thin part
205      *
206      *  \param theHexMesh Boolean indicating if shape is prepared for hex mesh (default=true)
207      *  \return List of GEOM_Object, containing the created shape and propagation groups.
208      */
209     GEOM::ListOfGO MakePipeTShapeTR (in double theR1, in double theW1, in double theL1,
210                                      in double theR2, in double theW2, in double theL2,
211                                      in double theRL, in double theWL, in double theLtransL, in double theLthinL,
212                                      in double theRR, in double theWR, in double theLtransR, in double theLthinR,
213                                      in double theRI, in double theWI, in double theLtransI, in double theLthinI,
214                                      in boolean theHexMesh);
215     /*!
216      *  \brief Create a T-shape object with specified caracteristics for the main and
217      *  the incident pipes (radius, width, half-length).
218      *
219      *  The extremities of the main pipe are located on junctions points P1 and P2.
220      *  The extremity of the incident pipe is located on junction point P3.
221      *  \param theR1 Internal radius of main pipe
222      *  \param theW1 Width of main pipe
223      *  \param theL1 Half-length of main pipe
224      *  \param theR2 Internal radius of incident pipe (R2 < R1)
225      *  \param theW2 Width of incident pipe (R2+W2 < R1+W1)
226      *  \param theL2 Half-length of incident pipe
227      *
228      *  \param theRL Internal radius of left thickness reduction
229      *  \param theWL Width of left thickness reduction
230      *  \param theLtransL Length of left transition part
231      *  \param theLthinL Length of left thin part
232      *
233      *  \param theRR Internal radius of right thickness reduction
234      *  \param theWR Width of right thickness reduction
235      *  \param theLtransR Length of right transition part
236      *  \param theLthinR Length of right thin part
237      *
238      *  \param theRI Internal radius of incident thickness reduction
239      *  \param theWI Width of incident thickness reduction
240      *  \param theLtransI Length of incident transition part
241      *  \param theLthinI Length of incident thin part
242      *
243      *  \param theHexMesh Boolean indicating if shape is prepared for hex mesh (default=true)
244      *  \param theP1 1st junction point of main pipe
245      *  \param theP2 2nd junction point of main pipe
246      *  \param theP3 Junction point of incident pipe
247      *  \return List of GEOM_Object, containing the created shape and propagation groups.
248      */
249     GEOM::ListOfGO MakePipeTShapeTRWithPosition(in double theR1, in double theW1, in double theL1,
250                                                 in double theR2, in double theW2, in double theL2,
251                                                 in double theRL, in double theWL, in double theLtransL, in double theLthinL,
252                                                 in double theRR, in double theWR, in double theLtransR, in double theLthinR,
253                                                 in double theRI, in double theWI, in double theLtransI, in double theLthinI,
254                                                 in boolean theHexMesh,
255                                                 in GEOM::GEOM_Object theP1, in GEOM::GEOM_Object theP2, in GEOM::GEOM_Object theP3);
256     /*!
257      *  \brief Create a T-shape object with specified caracteristics for the main and
258      *  the incident pipes (radius, width, half-length). A chamfer is created
259      *  on the junction of the pipes.
260      *  
261      *  Center of the shape is (0,0,0). The main plane of the T-shape is XOY.
262      *  \param theR1 Internal radius of main pipe
263      *  \param theW1 Width of main pipe
264      *  \param theL1 Half-length of main pipe
265      *  \param theR2 Internal radius of incident pipe (R2 < R1)
266      *  \param theW2 Width of incident pipe (R2+W2 < R1+W1)
267      *  \param theL2 Half-length of incident pipe
268      *
269      *  \param theRL Internal radius of left thickness reduction
270      *  \param theWL Width of left thickness reduction
271      *  \param theLtransL Length of left transition part
272      *  \param theLthinL Length of left thin part
273      *
274      *  \param theRR Internal radius of right thickness reduction
275      *  \param theWR Width of right thickness reduction
276      *  \param theLtransR Length of right transition part
277      *  \param theLthinR Length of right thin part
278      *
279      *  \param theRI Internal radius of incident thickness reduction
280      *  \param theWI Width of incident thickness reduction
281      *  \param theLtransI Length of incident transition part
282      *  \param theLthinI Length of incident thin part
283      *
284      *  \param theH Height of the chamfer.
285      *  \param theW Width of the chamfer.
286      *  \param theHexMesh Boolean indicating if shape is prepared for hex mesh (default=true)
287      *  \return List of GEOM_Object, containing the created shape and propagation groups.
288      */
289     GEOM::ListOfGO MakePipeTShapeTRChamfer(in double theR1, in double theW1, in double theL1,
290                                            in double theR2, in double theW2, in double theL2,
291                                            in double theRL, in double theWL, in double theLtransL, in double theLthinL,
292                                            in double theRR, in double theWR, in double theLtransR, in double theLthinR,
293                                            in double theRI, in double theWI, in double theLtransI, in double theLthinI,
294                                            in double theH, in double theW, in boolean theHexMesh);
295     /*!
296      *  \brief Create a T-shape object with specified caracteristics for the main and
297      *  the incident pipes (radius, width, half-length). 
298      * 
299      *  A chamfer is created on the junction of the pipes.
300      *  The extremities of the main pipe are located on junctions points P1 and P2.
301      *  The extremity of the incident pipe is located on junction point P3.
302      *  \param theR1 Internal radius of main pipe
303      *  \param theW1 Width of main pipe
304      *  \param theL1 Half-length of main pipe
305      *  \param theR2 Internal radius of incident pipe (R2 < R1)
306      *  \param theW2 Width of incident pipe (R2+W2 < R1+W1)
307      *  \param theL2 Half-length of incident pipe
308      *
309      *  \param theRL Internal radius of left thickness reduction
310      *  \param theWL Width of left thickness reduction
311      *  \param theLtransL Length of left transition part
312      *  \param theLthinL Length of left thin part
313      *
314      *  \param theRR Internal radius of right thickness reduction
315      *  \param theWR Width of right thickness reduction
316      *  \param theLtransR Length of right transition part
317      *  \param theLthinR Length of right thin part
318      *
319      *  \param theRI Internal radius of incident thickness reduction
320      *  \param theWI Width of incident thickness reduction
321      *  \param theLtransI Length of incident transition part
322      *  \param theLthinI Length of incident thin part
323      *
324      *  \param theH Height of the chamfer.
325      *  \param theW Width of the chamfer.
326      *  \param theHexMesh Boolean indicating if shape is prepared for hex mesh (default=true)
327      *  \param theP1 1st junction point of main pipe
328      *  \param theP2 2nd junction point of main pipe
329      *  \param theP3 Junction point of incident pipe
330      *  \return List of GEOM_Object, containing the created shape and propagation groups.
331      */
332     GEOM::ListOfGO MakePipeTShapeTRChamferWithPosition(in double theR1, in double theW1, in double theL1,
333                                                        in double theR2, in double theW2, in double theL2,
334                                                        in double theRL, in double theWL, in double theLtransL, in double theLthinL,
335                                                        in double theRR, in double theWR, in double theLtransR, in double theLthinR,
336                                                        in double theRI, in double theWI, in double theLtransI, in double theLthinI,
337                                                        in double theH, in double theW, in boolean theHexMesh,
338                                                        in GEOM::GEOM_Object theP1, in GEOM::GEOM_Object theP2, in GEOM::GEOM_Object theP3);
339     /*!
340      *  \brief Create a T-shape object with specified caracteristics for the main and
341      *  the incident pipes (radius, width, half-length). 
342      *
343      *  A fillet is created on the junction of the pipes.
344      *  Center of the shape is (0,0,0). The main plane of the T-shape is XOY.
345      *  \param theR1 Internal radius of main pipe
346      *  \param theW1 Width of main pipe
347      *  \param theL1 Half-length of main pipe
348      *  \param theR2 Internal radius of incident pipe (R2 < R1)
349      *  \param theW2 Width of incident pipe (R2+W2 < R1+W1)
350      *  \param theL2 Half-length of incident pipe
351      *
352      *  \param theRL Internal radius of left thickness reduction
353      *  \param theWL Width of left thickness reduction
354      *  \param theLtransL Length of left transition part
355      *  \param theLthinL Length of left thin part
356      *
357      *  \param theRR Internal radius of right thickness reduction
358      *  \param theWR Width of right thickness reduction
359      *  \param theLtransR Length of right transition part
360      *  \param theLthinR Length of right thin part
361      *
362      *  \param theRI Internal radius of incident thickness reduction
363      *  \param theWI Width of incident thickness reduction
364      *  \param theLtransI Length of incident transition part
365      *  \param theLthinI Length of incident thin part
366      *
367      *  \param theRF Radius of curvature of fillet.
368      *  \param theHexMesh Boolean indicating if shape is prepared for hex mesh (default=true)
369      *  \return List of GEOM_Object, containing the created shape and propagation groups.
370      */
371     GEOM::ListOfGO MakePipeTShapeTRFillet(in double theR1, in double theW1, in double theL1,
372                                           in double theR2, in double theW2, in double theL2,
373                                           in double theRL, in double theWL, in double theLtransL, in double theLthinL,
374                                           in double theRR, in double theWR, in double theLtransR, in double theLthinR,
375                                           in double theRI, in double theWI, in double theLtransI, in double theLthinI,
376                                           in double theRF, in boolean theHexMesh);
377     /*!
378      *  \brief Create a T-shape object with specified caracteristics for the main and
379      *  the incident pipes (radius, width, half-length).
380      *
381      *  A fillet is created on the junction of the pipes.
382      *  The extremities of the main pipe are located on junctions points P1 and P2.
383      *  The extremity of the incident pipe is located on junction point P3.
384      *  \param theR1 Internal radius of main pipe
385      *  \param theW1 Width of main pipe
386      *  \param theL1 Half-length of main pipe
387      *  \param theR2 Internal radius of incident pipe (R2 < R1)
388      *  \param theW2 Width of incident pipe (R2+W2 < R1+W1)
389      *  \param theL2 Half-length of incident pipe
390      *
391      *  \param theRL Internal radius of left thickness reduction
392      *  \param theWL Width of left thickness reduction
393      *  \param theLtransL Length of left transition part
394      *  \param theLthinL Length of left thin part
395      *
396      *  \param theRR Internal radius of right thickness reduction
397      *  \param theWR Width of right thickness reduction
398      *  \param theLtransR Length of right transition part
399      *  \param theLthinR Length of right thin part
400      *
401      *  \param theRI Internal radius of incident thickness reduction
402      *  \param theWI Width of incident thickness reduction
403      *  \param theLtransI Length of incident transition part
404      *  \param theLthinI Length of incident thin part
405      *
406      *  \param theRF Radius of curvature of fillet.
407      *  \param theHexMesh Boolean indicating if shape is prepared for hex mesh (default=true)
408      *  \param theP1 1st junction point of main pipe
409      *  \param theP2 2nd junction point of main pipe
410      *  \param theP3 Junction point of incident pipe
411      *  \return List of GEOM_Object, containing the created shape and propagation groups.
412      */
413     GEOM::ListOfGO MakePipeTShapeTRFilletWithPosition(in double theR1, in double theW1, in double theL1,
414                                                       in double theR2, in double theW2, in double theL2,
415                                                       in double theRL, in double theWL, in double theLtransL, in double theLthinL,
416                                                       in double theRR, in double theWR, in double theLtransR, in double theLthinR,
417                                                       in double theRI, in double theWI, in double theLtransI, in double theLthinI,
418                                                       in double theRF, in boolean theHexMesh,
419                                                       in GEOM::GEOM_Object theP1, in GEOM::GEOM_Object theP2, 
420                                                       in GEOM::GEOM_Object theP3);
421
422     /*!
423      *  This function allows to create a disk already divided into blocks. It
424      *  can be use to create divided pipes for later meshing in hexaedra.
425      *  \param theR Radius of the disk
426      *  \param theRatio Relative size of the central square diagonal against the disk diameter
427      *  \param theOrientation Plane on which the disk will be built
428      *  \param thePattern Division pattern. It can be GEOM.SQUARE or GEOM.HEXAGON
429      *  \return New GEOM_Object, containing the created shape.
430      */
431     GEOM::GEOM_Object MakeDividedDisk (in double theR, 
432                                        in double theRatio, 
433                                        in short theOrientation,
434                                        in GEOM::pattern thePattern);
435
436     /*!
437      *  \brief Create a Disk prepared for hexa meshing with given center, normal vector and radius.
438      *  \param thePnt disk center.
439      *  \param theVec Vector, normal to the plane of the disk.
440      *  \param theR Disk radius.
441      *  \param theRatio Relative size of the central square diagonal against the disk diameter
442      *  \param thePattern Division pattern. It can be GEOM.SQUARE or GEOM.HEXAGON
443      *  \return New GEOM_Object, containing the created disk.
444      */
445     GEOM::GEOM_Object MakeDividedDiskPntVecR ( in GEOM::GEOM_Object thePnt,
446                                                in GEOM::GEOM_Object theVec,
447                                                in double theR, 
448                                                in double theRatio,
449                                                in GEOM::pattern thePattern);
450
451     /*!
452      *  Builds a cylinder prepared for hexa meshes
453      *  \param theR Radius of the cylinder
454      *  \param theH Height of the cylinder
455      *  \param thePattern Division pattern. It can be GEOM.SQUARE or GEOM.HEXAGON
456      *  \return New GEOM_Object, containing the created shape.
457      */
458     GEOM::GEOM_Object MakeDividedCylinder (in double theR, 
459                                            in double theH,
460                                            in GEOM::pattern thePattern );
461     /*!
462      *  
463      *  Create a smoothing surface from a set of points
464      *  \param thelPoints list of points. Compounds of ggpoints are accepted as well.
465      *  \param theNbMax maximum number of Bezier pieces in the resulting surface.
466      *  \param theDegMax maximum degree of the resulting BSpline surface
467      *  \param theDMax specifies maximum value of the GeomPlate_PlateG0Criterion criterion.
468      *  \return New GEOM_Object, containing the created shape.
469      */
470     GEOM::GEOM_Object MakeSmoothingSurface (in GEOM::ListOfGO thelPoints,
471                                       in long           theNbMax,
472                                       in long           theDegMax,
473                                       in double         theDMax);
474
475     /*@@ insert new functions before this line @@ do not remove this line @@*/
476   };
477 };
478
479 #endif // __AdvancedGEOM_IDL__