Salome HOME
Mantis issue 0020998: EDF 1572 GEOM: Some limitations to the PipeTShape.
[modules/geom.git] / src / GEOMImpl / GEOMImpl_IAdvancedOperations.hxx
1 //  Copyright (C) 2007-2010  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.
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
20 //  File   : GEOMImpl_IAdvancedOperations.hxx
21 //  Author : Vadim SANDLER, Open CASCADE S.A.S. (vadim.sandler@opencascade.com)
22 //
23 #ifndef _GEOMImpl_IAdvancedOperations_HXX_
24 #define _GEOMImpl_IAdvancedOperations_HXX_
25
26 #include <Utils_SALOME_Exception.hxx>
27 #include "GEOM_IOperations.hxx"
28 #include "GEOM_Engine.hxx"
29 #include "GEOM_Object.hxx"
30
31 class GEOMImpl_IBasicOperations;
32 class GEOMImpl_IBooleanOperations;
33 class GEOMImpl_IShapesOperations;
34 class GEOMImpl_ITransformOperations;
35 class GEOMImpl_IBlocksOperations;
36 class GEOMImpl_I3DPrimOperations;
37 class GEOMImpl_ILocalOperations;
38
39 class GEOMImpl_IAdvancedOperations: public GEOM_IOperations {
40 private:
41   bool MakePipeTShapePartition(Handle(GEOM_Object) theShape,
42                                double theR1, double theW1, double theL1,
43                                double theR2, double theW2, double theL2,
44                                double theH = 0, double theW = 0,
45                                double theRF = 0, bool isNormal = true);
46   bool MakePipeTShapeMirrorAndGlue(Handle(GEOM_Object) theShape,
47                                    double theR1, double theW1, double theL1,
48                                    double theR2, double theW2, double theL2);
49   bool MakeGroups(Handle(GEOM_Object) theShape, int shapType,
50                   double theR1, double theW1, double theL1,
51                   double theR2, double theW2, double theL2,
52                   Handle(TColStd_HSequenceOfTransient) theSeq,
53                   gp_Trsf aTrsf);
54   gp_Trsf GetPositionTrsf(double theL1, double theL2,
55                           Handle(GEOM_Object) P1 = 0,
56                           Handle(GEOM_Object) P2 = 0,
57                           Handle(GEOM_Object) P3 = 0);
58   bool CheckCompatiblePosition(double& theL1, double& theL2, 
59                                Handle(GEOM_Object) theP1, 
60                                Handle(GEOM_Object) theP2,
61                                Handle(GEOM_Object) theP3,
62                                double theTolerance);
63 private:
64   GEOMImpl_IBasicOperations*     myBasicOperations;
65   GEOMImpl_IBooleanOperations*   myBooleanOperations;
66   GEOMImpl_IShapesOperations*    myShapesOperations;
67   GEOMImpl_ITransformOperations* myTransformOperations;
68   GEOMImpl_IBlocksOperations*    myBlocksOperations;
69   GEOMImpl_I3DPrimOperations*    my3DPrimOperations;
70   GEOMImpl_ILocalOperations*     myLocalOperations;
71
72 public:
73   Standard_EXPORT GEOMImpl_IAdvancedOperations(GEOM_Engine* theEngine, int theDocID);
74   Standard_EXPORT ~GEOMImpl_IAdvancedOperations();
75
76   Standard_EXPORT Handle(TColStd_HSequenceOfTransient) 
77                   MakePipeTShape(double theR1, double theW1, double theL1,
78                                  double theR2, double theW2, double theL2,
79                                  bool theHexMesh = true);
80   Standard_EXPORT Handle(TColStd_HSequenceOfTransient)
81                   MakePipeTShapeWithPosition(double theR1, double theW1, double theL1,
82                                              double theR2, double theW2, double theL2,
83                                              bool theHexMesh = true,
84                                              Handle(GEOM_Object) P1 = 0,
85                                              Handle(GEOM_Object) P2 = 0,
86                                              Handle(GEOM_Object) P3 = 0);
87   Standard_EXPORT Handle(TColStd_HSequenceOfTransient)
88                   MakePipeTShapeChamfer(double theR1, double theW1, double theL1,
89                                         double theR2, double theW2, double theL2,
90                                         double theH,  double theW, 
91                                         bool theHexMesh = true);
92   Standard_EXPORT Handle(TColStd_HSequenceOfTransient)
93                   MakePipeTShapeChamferWithPosition(double theR1, double theW1, double theL1,
94                                                     double theR2, double theW2, double theL2,
95                                                     double theH, double theW,
96                                                     bool theHexMesh = true,
97                                                     Handle(GEOM_Object) P1 = 0,
98                                                     Handle(GEOM_Object) P2 = 0,
99                                                     Handle(GEOM_Object) P3 = 0);
100   Standard_EXPORT Handle(TColStd_HSequenceOfTransient)
101                   MakePipeTShapeFillet(double theR1, double theW1, double theL1,
102                                        double theR2, double theW2, double theL2,
103                                        double theRF, bool theHexMesh = true);
104   Standard_EXPORT Handle(TColStd_HSequenceOfTransient)
105                   MakePipeTShapeFilletWithPosition(double theR1, double theW1, double theL1,
106                                                    double theR2, double theW2, double theL2,
107                                                    double theRF, bool theHexMesh = true,
108                                                    Handle(GEOM_Object) P1 = 0,
109                                                    Handle(GEOM_Object) P2 = 0,
110                                                    Handle(GEOM_Object) P3 = 0);
111   /*@@ insert new functions before this line @@ do not remove this line @@*/
112 };
113 #endif