Salome HOME
Merge from V6_main_20120808 08Aug12
[modules/geom.git] / src / GEOMImpl / GEOMImpl_IAdvancedOperations.hxx
1 // Copyright (C) 2007-2012  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 //  File   : GEOMImpl_IAdvancedOperations.hxx
20 //  Author : Vadim SANDLER, Open CASCADE S.A.S. (vadim.sandler@opencascade.com)
21
22 #ifndef _GEOMImpl_IAdvancedOperations_HXX_
23 #define _GEOMImpl_IAdvancedOperations_HXX_
24
25 #include <Utils_SALOME_Exception.hxx>
26 #include "GEOM_IOperations.hxx"
27 #include "GEOM_Engine.hxx"
28 #include "GEOM_Object.hxx"
29
30 class GEOMImpl_IBasicOperations;
31 class GEOMImpl_IBooleanOperations;
32 class GEOMImpl_IShapesOperations;
33 class GEOMImpl_ITransformOperations;
34 class GEOMImpl_IBlocksOperations;
35 class GEOMImpl_I3DPrimOperations;
36 class GEOMImpl_ILocalOperations;
37 class GEOMImpl_IHealingOperations;
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   GEOMImpl_IHealingOperations*   myHealingOperations;
72
73 public:
74   Standard_EXPORT GEOMImpl_IAdvancedOperations(GEOM_Engine* theEngine, int theDocID);
75   Standard_EXPORT ~GEOMImpl_IAdvancedOperations();
76
77   Standard_EXPORT Handle(TColStd_HSequenceOfTransient) 
78                   MakePipeTShape(double theR1, double theW1, double theL1,
79                                  double theR2, double theW2, double theL2,
80                                  bool theHexMesh = true);
81   Standard_EXPORT Handle(TColStd_HSequenceOfTransient)
82                   MakePipeTShapeWithPosition(double theR1, double theW1, double theL1,
83                                              double theR2, double theW2, double theL2,
84                                              bool theHexMesh = true,
85                                              Handle(GEOM_Object) P1 = 0,
86                                              Handle(GEOM_Object) P2 = 0,
87                                              Handle(GEOM_Object) P3 = 0);
88   Standard_EXPORT Handle(TColStd_HSequenceOfTransient)
89                   MakePipeTShapeChamfer(double theR1, double theW1, double theL1,
90                                         double theR2, double theW2, double theL2,
91                                         double theH,  double theW, 
92                                         bool theHexMesh = true);
93   Standard_EXPORT Handle(TColStd_HSequenceOfTransient)
94                   MakePipeTShapeChamferWithPosition(double theR1, double theW1, double theL1,
95                                                     double theR2, double theW2, double theL2,
96                                                     double theH, double theW,
97                                                     bool theHexMesh = true,
98                                                     Handle(GEOM_Object) P1 = 0,
99                                                     Handle(GEOM_Object) P2 = 0,
100                                                     Handle(GEOM_Object) P3 = 0);
101   Standard_EXPORT Handle(TColStd_HSequenceOfTransient)
102                   MakePipeTShapeFillet(double theR1, double theW1, double theL1,
103                                        double theR2, double theW2, double theL2,
104                                        double theRF, bool theHexMesh = true);
105   Standard_EXPORT Handle(TColStd_HSequenceOfTransient)
106                   MakePipeTShapeFilletWithPosition(double theR1, double theW1, double theL1,
107                                                    double theR2, double theW2, double theL2,
108                                                    double theRF, bool theHexMesh = true,
109                                                    Handle(GEOM_Object) P1 = 0,
110                                                    Handle(GEOM_Object) P2 = 0,
111                                                    Handle(GEOM_Object) P3 = 0);
112                   
113   Standard_EXPORT Handle(GEOM_Object) MakeDividedDisk (double theR, double theRatio, 
114                                                        int theOrientation, int thePattern);
115   Standard_EXPORT Handle(GEOM_Object) MakeDividedDiskPntVecR (Handle(GEOM_Object) thePnt, 
116                                                               Handle(GEOM_Object) theVec, 
117                                                               double theR, 
118                                                               double theRatio,
119                                                               int    thePattern);
120   
121   Standard_EXPORT Handle(GEOM_Object) MakeDividedCylinder (double theR, 
122                                                            double theH,
123                                                            int thePattern);
124   
125   /*@@ insert new functions before this line @@ do not remove this line @@*/
126 };
127 #endif