1 // Copyright (C) 2007-2016 CEA/DEN, EDF R&D, OPEN CASCADE
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.
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.
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
17 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
19 // File : AdvancedGEOM.idl
20 // Author : Roman NIKOLAEV
22 #ifndef __AdvancedGEOM_IDL__
23 #define __AdvancedGEOM_IDL__
25 #include "GEOM_Gen.idl"
30 * \brief Pattern for block division of the disk
40 * \brief Interface for advanced modeling functions.
42 interface IAdvancedOperations : GEOM::GEOM_IOperations
44 // T-Shape WITHOUT Thickness reduction
47 * \brief Create a T-shape object with specified caracteristics for the main and
48 * the incident pipes (radius, width, half-length).
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.
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);
64 * \brief Create a T-shape object with specified caracteristics for the main and
65 * the incident pipes (radius, width, half-length).
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.
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);
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.
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.
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);
107 * \brief Create a T-shape object with specified caracteristics for the main and
108 * the incident pipes (radius, width, half-length).
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.
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);
133 * \brief Create a T-shape object with specified caracteristics for the main and
134 * the incident pipes (radius, width, half-length).
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.
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);
152 * \brief Create a T-shape object with specified caracteristics for the main and
153 * the incident pipes (radius, width, half-length).
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.
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);
177 // T-Shape WITH Thickness reduction
180 * \brief Create a T-shape object with specified caracteristics for the main and
181 * the incident pipes (radius, width, half-length).
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
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
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
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
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.
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);
216 * \brief Create a T-shape object with specified caracteristics for the main and
217 * the incident pipes (radius, width, half-length).
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
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
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
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
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.
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);
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.
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
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
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
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
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.
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);
296 * \brief Create a T-shape object with specified caracteristics for the main and
297 * the incident pipes (radius, width, half-length).
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
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
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
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
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.
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);
340 * \brief Create a T-shape object with specified caracteristics for the main and
341 * the incident pipes (radius, width, half-length).
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
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
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
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
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.
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);
378 * \brief Create a T-shape object with specified caracteristics for the main and
379 * the incident pipes (radius, width, half-length).
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
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
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
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
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.
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);
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.
431 GEOM::GEOM_Object MakeDividedDisk (in double theR,
433 in short theOrientation,
434 in GEOM::pattern thePattern);
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.
445 GEOM::GEOM_Object MakeDividedDiskPntVecR ( in GEOM::GEOM_Object thePnt,
446 in GEOM::GEOM_Object theVec,
449 in GEOM::pattern thePattern);
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.
458 GEOM::GEOM_Object MakeDividedCylinder (in double theR,
460 in GEOM::pattern thePattern );
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.
470 GEOM::GEOM_Object MakeSmoothingSurface (in GEOM::ListOfGO thelPoints,
475 /*@@ insert new functions before this line @@ do not remove this line @@*/
479 #endif // __AdvancedGEOM_IDL__