]> SALOME platform Git repositories - modules/geom.git/blob - src/GEOM_I/GEOM_IBlocksOperations_i.hh
Salome HOME
1a4a23a96b83e1e17c2037e0d18387a9cf09a4fe
[modules/geom.git] / src / GEOM_I / GEOM_IBlocksOperations_i.hh
1
2 #ifndef _GEOM_IBlocksOperations_i_HeaderFile
3 #define _GEOM_IBlocksOperations_i_HeaderFile
4
5
6 #include <SALOMEconfig.h>
7
8 #include CORBA_SERVER_HEADER(GEOM_Gen)
9 #include "GEOM_IOperations_i.hh"
10 #include "GEOM_Object_i.hh"
11
12 #include "GEOMImpl_IBlocksOperations.hxx"
13
14 class GEOM_IBlocksOperations_i :
15     public virtual POA_GEOM::GEOM_IBlocksOperations,
16     public virtual GEOM_IOperations_i
17 {
18  public:
19   GEOM_IBlocksOperations_i (PortableServer::POA_ptr thePOA, GEOM::GEOM_Gen_ptr theEngine,
20                             ::GEOMImpl_IBlocksOperations* theImpl);
21   ~GEOM_IBlocksOperations_i();
22
23   // Creation of blocks and block faces
24   GEOM::GEOM_Object_ptr MakeQuadFaceFourVertices (GEOM::GEOM_Object_ptr thePnt1,
25                                                   GEOM::GEOM_Object_ptr thePnt2,
26                                                   GEOM::GEOM_Object_ptr thePnt3,
27                                                   GEOM::GEOM_Object_ptr thePnt4);
28
29   GEOM::GEOM_Object_ptr MakeQuadFaceFourEdges (GEOM::GEOM_Object_ptr theEdge1,
30                                                GEOM::GEOM_Object_ptr theEdge2,
31                                                GEOM::GEOM_Object_ptr theEdge3,
32                                                GEOM::GEOM_Object_ptr theEdge4);
33
34   GEOM::GEOM_Object_ptr MakeQuadFaceTwoEdges (GEOM::GEOM_Object_ptr theEdge1,
35                                               GEOM::GEOM_Object_ptr theEdge2);
36
37   GEOM::GEOM_Object_ptr MakeHexaSolidSixFaces (GEOM::GEOM_Object_ptr theFace1,
38                                                GEOM::GEOM_Object_ptr theFace2,
39                                                GEOM::GEOM_Object_ptr theFace3,
40                                                GEOM::GEOM_Object_ptr theFace4,
41                                                GEOM::GEOM_Object_ptr theFace5,
42                                                GEOM::GEOM_Object_ptr theFace6);
43
44   GEOM::GEOM_Object_ptr MakeHexaSolidTwoFaces (GEOM::GEOM_Object_ptr theFace1,
45                                                GEOM::GEOM_Object_ptr theFace2);
46
47   // Extract elements of blocks and blocks compounds
48   GEOM::GEOM_Object_ptr GetEdge (GEOM::GEOM_Object_ptr theShape,
49                                  GEOM::GEOM_Object_ptr thePoint1,
50                                  GEOM::GEOM_Object_ptr thePoint2);
51
52   GEOM::GEOM_Object_ptr GetFaceByPoints (GEOM::GEOM_Object_ptr theShape,
53                                          GEOM::GEOM_Object_ptr thePoint1,
54                                          GEOM::GEOM_Object_ptr thePoint2,
55                                          GEOM::GEOM_Object_ptr thePoint3,
56                                          GEOM::GEOM_Object_ptr thePoint4);
57
58   GEOM::GEOM_Object_ptr GetFaceByEdges (GEOM::GEOM_Object_ptr theShape,
59                                         GEOM::GEOM_Object_ptr theEdge1,
60                                         GEOM::GEOM_Object_ptr theEdge2);
61
62   GEOM::GEOM_Object_ptr GetOppositeFace (GEOM::GEOM_Object_ptr theBlock,
63                                          GEOM::GEOM_Object_ptr theFace);
64
65   GEOM::GEOM_Object_ptr GetFaceNearPoint (GEOM::GEOM_Object_ptr theShape,
66                                           GEOM::GEOM_Object_ptr thePoint);
67
68   GEOM::GEOM_Object_ptr GetFaceByNormale (GEOM::GEOM_Object_ptr theBlock,
69                                           GEOM::GEOM_Object_ptr theVector);
70
71   // Extract blocks from blocks compounds
72   CORBA::Boolean IsCompoundOfBlocks (GEOM::GEOM_Object_ptr theCompound,
73                                      const CORBA::Long     theMinNbFaces,
74                                      const CORBA::Long     theMaxNbFaces,
75                                      CORBA::Long&          theNbBlocks);
76
77   GEOM::ListOfGO* ExplodeCompoundOfBlocks (GEOM::GEOM_Object_ptr theCompound,
78                                            const CORBA::Long     theMinNbFaces,
79                                            const CORBA::Long     theMaxNbFaces);
80
81   GEOM::GEOM_Object_ptr GetBlockNearPoint (GEOM::GEOM_Object_ptr theCompound,
82                                            GEOM::GEOM_Object_ptr thePoint);
83
84   GEOM::GEOM_Object_ptr GetBlockByParts (GEOM::GEOM_Object_ptr theCompound,
85                                          const GEOM::ListOfGO& theParts);
86
87   GEOM::ListOfGO* GetBlocksByParts (GEOM::GEOM_Object_ptr theCompound,
88                                     const GEOM::ListOfGO& theParts);
89
90   // Operations on blocks with gluing of result
91   GEOM::GEOM_Object_ptr MakeMultiTransformation1D (GEOM::GEOM_Object_ptr theBlock,
92                                                    const CORBA::Long     theDirFace1,
93                                                    const CORBA::Long     theDirFace2,
94                                                    const CORBA::Long     theNbTimes);
95
96   GEOM::GEOM_Object_ptr MakeMultiTransformation2D (GEOM::GEOM_Object_ptr theBlock,
97                                                    const CORBA::Long     theDirFace1U,
98                                                    const CORBA::Long     theDirFace2U,
99                                                    const CORBA::Long     theNbTimesU,
100                                                    const CORBA::Long     theDirFace1V,
101                                                    const CORBA::Long     theDirFace2V,
102                                                    const CORBA::Long     theNbTimesV);
103
104   ::GEOMImpl_IBlocksOperations* GetOperations()
105   { return (::GEOMImpl_IBlocksOperations*)GetImpl(); }
106 };
107
108 #endif