2 #ifndef _GEOM_IBlocksOperations_i_HeaderFile
3 #define _GEOM_IBlocksOperations_i_HeaderFile
6 #include <SALOMEconfig.h>
8 #include CORBA_SERVER_HEADER(GEOM_Gen)
9 #include "GEOM_IOperations_i.hh"
10 #include "GEOM_Object_i.hh"
12 #include "GEOMImpl_IBlocksOperations.hxx"
14 class GEOM_IBlocksOperations_i :
15 public virtual POA_GEOM::GEOM_IBlocksOperations,
16 public virtual GEOM_IOperations_i
19 GEOM_IBlocksOperations_i (PortableServer::POA_ptr thePOA, GEOM::GEOM_Gen_ptr theEngine,
20 ::GEOMImpl_IBlocksOperations* theImpl);
21 ~GEOM_IBlocksOperations_i();
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);
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);
34 GEOM::GEOM_Object_ptr MakeQuadFaceTwoEdges (GEOM::GEOM_Object_ptr theEdge1,
35 GEOM::GEOM_Object_ptr theEdge2);
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);
44 GEOM::GEOM_Object_ptr MakeHexaSolidTwoFaces (GEOM::GEOM_Object_ptr theFace1,
45 GEOM::GEOM_Object_ptr theFace2);
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);
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);
58 GEOM::GEOM_Object_ptr GetFaceByEdges (GEOM::GEOM_Object_ptr theShape,
59 GEOM::GEOM_Object_ptr theEdge1,
60 GEOM::GEOM_Object_ptr theEdge2);
62 GEOM::GEOM_Object_ptr GetOppositeFace (GEOM::GEOM_Object_ptr theBlock,
63 GEOM::GEOM_Object_ptr theFace);
65 GEOM::GEOM_Object_ptr GetFaceNearPoint (GEOM::GEOM_Object_ptr theShape,
66 GEOM::GEOM_Object_ptr thePoint);
68 GEOM::GEOM_Object_ptr GetFaceByNormale (GEOM::GEOM_Object_ptr theBlock,
69 GEOM::GEOM_Object_ptr theVector);
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);
77 GEOM::ListOfGO* ExplodeCompoundOfBlocks (GEOM::GEOM_Object_ptr theCompound,
78 const CORBA::Long theMinNbFaces,
79 const CORBA::Long theMaxNbFaces);
81 GEOM::GEOM_Object_ptr GetBlockNearPoint (GEOM::GEOM_Object_ptr theCompound,
82 GEOM::GEOM_Object_ptr thePoint);
84 GEOM::GEOM_Object_ptr GetBlockByParts (GEOM::GEOM_Object_ptr theCompound,
85 const GEOM::ListOfGO& theParts);
87 GEOM::ListOfGO* GetBlocksByParts (GEOM::GEOM_Object_ptr theCompound,
88 const GEOM::ListOfGO& theParts);
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);
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);
104 ::GEOMImpl_IBlocksOperations* GetOperations()
105 { return (::GEOMImpl_IBlocksOperations*)GetImpl(); }