Salome HOME
3a3ce45965c8f7c1e8beea2509a6dc1b2df3bbc6
[modules/geom.git] / src / GEOM_I_Superv / GEOM_Superv_i.hh
1 #ifndef __GEOM_SUPERV_I_H__
2 #define __GEOM_SUPERV_I_H__
3
4 // IDL headers
5 #include <SALOMEconfig.h>
6 #include CORBA_SERVER_HEADER(GEOM_Superv)
7
8 #include "GEOM_Gen_i.hh"
9 #include "GEOM_List_i.hh"
10
11 #include "QAD_Study.h"
12 #include "QAD_Application.h"
13 #include "QAD_Desktop.h"
14
15 class GEOM_Superv_i : public virtual POA_GEOM::GEOM_Superv,
16                       public Engines_Component_i
17 {
18 public:
19   GEOM_Superv_i(CORBA::ORB_ptr orb,
20                 PortableServer::POA_ptr poa,
21                 PortableServer::ObjectId * contId, 
22                 const char *instanceName, 
23                 const char *interfaceName);
24   ~GEOM_Superv_i();
25
26   // generic method to be put in a super class
27   void register_name(char * name);
28   void setGeomEngine();
29
30   void getBasicOp();
31   void get3DPrimOp();
32   void getBoolOp();
33   void getInsOp();
34   void getTransfOp();
35   void getShapesOp();
36   void getBlocksOp();
37   void getCurvesOp();
38   void getLocalOp();
39   void getGroupOp();  
40
41   PortableServer::ServantBase_var GetServant(CORBA::Object_ptr       theObject,
42                                              PortableServer::POA_ptr thePOA);
43
44   //-----------------------------------------------------------------------//
45   // Set current stydy ID                                                  //
46   //-----------------------------------------------------------------------//
47   void SetStudyID( CORBA::Long theId );      
48
49   //-----------------------------------------------------------//
50   // Create ListOfGO and add items to it                       // 
51   //-----------------------------------------------------------//
52   GEOM::GEOM_List_ptr CreateListOfGO();
53   void AddItemToListOfGO(GEOM::GEOM_List_ptr& theList, 
54                          GEOM::GEOM_Object_ptr    theObject);
55
56   //-----------------------------------------------------------//
57   // Create ListOfLong and add items to it                     // 
58   //-----------------------------------------------------------//
59   GEOM::GEOM_List_ptr CreateListOfLong();
60   void AddItemToListOfLong(GEOM::GEOM_List_ptr& theList, 
61                            long    theObject);
62   
63   //-----------------------------------------------------------//
64   // Create ListOfDouble and add items to it                   // 
65   //-----------------------------------------------------------//
66   GEOM::GEOM_List_ptr CreateListOfDouble();
67   void AddItemToListOfDouble(GEOM::GEOM_List_ptr& theList, 
68                              double    theObject);
69
70   //-----------------------------------------------------------------------//
71   // Inherited methods from SALOMEDS::Driver                               //
72   //-----------------------------------------------------------------------//    
73
74   SALOMEDS::TMPFile* Save(SALOMEDS::SComponent_ptr theComponent,
75                           const char* theURL,
76                           bool isMultiFile);
77
78   SALOMEDS::TMPFile* SaveASCII(SALOMEDS::SComponent_ptr theComponent,
79                                const char* theURL,
80                                bool isMultiFile);
81   
82   CORBA::Boolean Load(SALOMEDS::SComponent_ptr theComponent,
83                       const SALOMEDS::TMPFile& theStream,
84                       const char* theURL,
85                       bool isMultiFile);
86
87   CORBA::Boolean LoadASCII(SALOMEDS::SComponent_ptr theComponent,
88                            const SALOMEDS::TMPFile& theStream,
89                            const char* theURL,
90                            bool isMultiFile);
91
92   void Close(SALOMEDS::SComponent_ptr theComponent);
93   char* ComponentDataType();
94
95
96   char* IORToLocalPersistentID(SALOMEDS::SObject_ptr theSObject,
97                                const char* IORString,
98                                CORBA::Boolean isMultiFile,
99                                CORBA::Boolean isASCII);
100   char* LocalPersistentIDToIOR(SALOMEDS::SObject_ptr theSObject,
101                                const char* aLocalPersistentID,
102                                CORBA::Boolean isMultiFile,
103                                CORBA::Boolean isASCII);
104
105   bool CanPublishInStudy(CORBA::Object_ptr theIOR);
106   SALOMEDS::SObject_ptr PublishInStudy(SALOMEDS::Study_ptr theStudy,
107                                        SALOMEDS::SObject_ptr theSObject,
108                                        CORBA::Object_ptr theObject,
109                                        const char* theName) throw (SALOME::SALOME_Exception) ;
110
111   CORBA::Boolean CanCopy(SALOMEDS::SObject_ptr theObject);
112   SALOMEDS::TMPFile* CopyFrom(SALOMEDS::SObject_ptr theObject, CORBA::Long& theObjectID);
113   CORBA::Boolean CanPaste(const char* theComponentName, CORBA::Long theObjectID);
114   SALOMEDS::SObject_ptr PasteInto(const SALOMEDS::TMPFile& theStream,
115                                   CORBA::Long theObjectID,
116                                   SALOMEDS::SObject_ptr theObject);
117
118   //-----------------------------------------------------------//
119   // Primitives Construction : BasicOperations                 // 
120   //-----------------------------------------------------------//
121   GEOM::GEOM_Object_ptr MakePointXYZ (CORBA::Double theX,
122                                       CORBA::Double theY,
123                                       CORBA::Double theZ);
124   GEOM::GEOM_Object_ptr MakePointWithReference (GEOM::GEOM_Object_ptr theReference,
125                                                 CORBA::Double theX, 
126                                                 CORBA::Double theY, 
127                                                 CORBA::Double theZ);
128   GEOM::GEOM_Object_ptr MakePointOnCurve (GEOM::GEOM_Object_ptr theRefCurve,
129                                           CORBA::Double theParameter);
130   GEOM::GEOM_Object_ptr MakeVectorDXDYDZ (CORBA::Double theDX,
131                                           CORBA::Double theDY,
132                                           CORBA::Double theDZ);
133   GEOM::GEOM_Object_ptr MakeVectorTwoPnt (GEOM::GEOM_Object_ptr thePnt1,
134                                           GEOM::GEOM_Object_ptr thePnt2);
135   GEOM::GEOM_Object_ptr MakeLineTwoPnt (GEOM::GEOM_Object_ptr thePnt1,
136                                         GEOM::GEOM_Object_ptr thePnt2);
137   GEOM::GEOM_Object_ptr MakePlaneThreePnt (GEOM::GEOM_Object_ptr thePnt1,
138                                            GEOM::GEOM_Object_ptr thePnt2,
139                                            GEOM::GEOM_Object_ptr thePnt3,
140                                            CORBA::Double theTrimSize);
141   GEOM::GEOM_Object_ptr MakePlanePntVec (GEOM::GEOM_Object_ptr thePnt,
142                                          GEOM::GEOM_Object_ptr theVec,
143                                          CORBA::Double theTrimSize);
144   GEOM::GEOM_Object_ptr MakePlaneFace (GEOM::GEOM_Object_ptr theFace,
145                                        CORBA::Double theTrimSize);
146   GEOM::GEOM_Object_ptr MakeMarker (CORBA::Double theOX , CORBA::Double theOY , CORBA::Double theOZ,
147                                     CORBA::Double theXDX, CORBA::Double theXDY, CORBA::Double theXDZ,
148                                     CORBA::Double theYDX, CORBA::Double theYDY, CORBA::Double theYDZ);
149
150   //-----------------------------------------------------------//
151   // Primitives Construction : 3DPrimOperations                //
152   //-----------------------------------------------------------//
153   GEOM::GEOM_Object_ptr MakeBox (CORBA::Double theX1,
154                                  CORBA::Double theY1,
155                                  CORBA::Double theZ1,
156                                  CORBA::Double theX2,
157                                  CORBA::Double theY2,
158                                  CORBA::Double theZ2);
159   GEOM::GEOM_Object_ptr MakeBoxDXDYDZ (CORBA::Double theDX, 
160                                        CORBA::Double theDY, 
161                                        CORBA::Double theDZ);
162   GEOM::GEOM_Object_ptr MakeBoxTwoPnt (GEOM::GEOM_Object_ptr thePnt1, 
163                                        GEOM::GEOM_Object_ptr thePnt2);
164   GEOM::GEOM_Object_ptr MakeCylinderPntVecRH (GEOM::GEOM_Object_ptr thePnt,
165                                               GEOM::GEOM_Object_ptr theAxis,
166                                               CORBA::Double theRadius,
167                                               CORBA::Double theHeight);
168   GEOM::GEOM_Object_ptr MakeCylinderRH (CORBA::Double theR, 
169                                         CORBA::Double theH);
170   GEOM::GEOM_Object_ptr MakeSphere (CORBA::Double theX,
171                                     CORBA::Double theY,
172                                     CORBA::Double theZ,
173                                     CORBA::Double theRadius);
174   GEOM::GEOM_Object_ptr MakeSphereR (CORBA::Double theR);
175   GEOM::GEOM_Object_ptr MakeSpherePntR (GEOM::GEOM_Object_ptr thePnt, 
176                                         CORBA::Double theR);
177   GEOM::GEOM_Object_ptr MakeTorusPntVecRR (GEOM::GEOM_Object_ptr thePnt,
178                                            GEOM::GEOM_Object_ptr theVec,
179                                            CORBA::Double theRMajor,
180                                            CORBA::Double theRMinor);
181   GEOM::GEOM_Object_ptr MakeTorusRR (CORBA::Double theRMajor,
182                                      CORBA::Double theRMinor);
183   GEOM::GEOM_Object_ptr MakeConePntVecR1R2H (GEOM::GEOM_Object_ptr thePnt,
184                                              GEOM::GEOM_Object_ptr theAxis,
185                                              CORBA::Double theR1,
186                                              CORBA::Double theR2,
187                                              CORBA::Double theHeight);
188   GEOM::GEOM_Object_ptr MakeConeR1R2H (CORBA::Double theR1, 
189                                        CORBA::Double theR2, 
190                                        CORBA::Double theHeight);
191   GEOM::GEOM_Object_ptr MakePrismVecH (GEOM::GEOM_Object_ptr theBase,
192                                        GEOM::GEOM_Object_ptr theVec,
193                                        CORBA::Double         theH);
194   GEOM::GEOM_Object_ptr MakePrismTwoPnt (GEOM::GEOM_Object_ptr theBase,
195                                          GEOM::GEOM_Object_ptr thePoint1,
196                                          GEOM::GEOM_Object_ptr thePoint2);
197   GEOM::GEOM_Object_ptr MakePipe (GEOM::GEOM_Object_ptr theBase, 
198                                   GEOM::GEOM_Object_ptr thePath);
199   GEOM::GEOM_Object_ptr MakeRevolutionAxisAngle (GEOM::GEOM_Object_ptr theBase,
200                                                  GEOM::GEOM_Object_ptr theAxis,
201                                                  CORBA::Double theAngle);
202   GEOM::GEOM_Object_ptr MakeFilling (GEOM::GEOM_Object_ptr theShape,
203                                      CORBA::Long theMinDeg, CORBA::Long theMaxDeg,
204                                      CORBA::Double theTol2D, CORBA::Double theTol3D,
205                                      CORBA::Long theNbIter);
206   
207   //-----------------------------------------------------------//
208   // BooleanOperations                                         //
209   //-----------------------------------------------------------//
210   GEOM::GEOM_Object_ptr MakeBoolean (GEOM::GEOM_Object_ptr theShape1,
211                                      GEOM::GEOM_Object_ptr theShape2,
212                                      CORBA::Long theOperation);
213   GEOM::GEOM_Object_ptr MakeFuse (GEOM::GEOM_Object_ptr theShape1,
214                                   GEOM::GEOM_Object_ptr theShape2);
215   GEOM::GEOM_Object_ptr MakePartition (GEOM::GEOM_List_ptr   theShapes,
216                                        GEOM::GEOM_List_ptr   theTools,
217                                        GEOM::GEOM_List_ptr   theKeepInside,
218                                        GEOM::GEOM_List_ptr   theRemoveInside,
219                                        const CORBA::Short      theLimit,
220                                        const CORBA::Boolean    theRemoveWebs,
221                                        GEOM::GEOM_List_ptr theMaterials);
222   GEOM::GEOM_Object_ptr MakeHalfPartition (GEOM::GEOM_Object_ptr theShape,
223                                            GEOM::GEOM_Object_ptr thePlane);
224
225   //-----------------------------------------------------------//
226   // InsertOperations                                          //
227   //-----------------------------------------------------------//
228   GEOM::GEOM_Object_ptr MakeCopy (GEOM::GEOM_Object_ptr theOriginal);
229   void Export (GEOM::GEOM_Object_ptr theObject, 
230                const char*           theFileName, 
231                const char*           theFormatName);
232   GEOM::GEOM_Object_ptr Import (const char* theFileName, 
233                                 const char* theFormatName);
234   void ImportTranslators (GEOM::string_array_out theFormats,
235                           GEOM::string_array_out thePatterns);
236   void ExportTranslators (GEOM::string_array_out theFormats,
237                           GEOM::string_array_out thePatterns);
238
239   //-----------------------------------------------------------//
240   // TransformOperations                                       //
241   //-----------------------------------------------------------//
242   GEOM::GEOM_Object_ptr TranslateTwoPoints (GEOM::GEOM_Object_ptr theObject,
243                                             GEOM::GEOM_Object_ptr thePoint1,
244                                             GEOM::GEOM_Object_ptr thePoint2);
245   GEOM::GEOM_Object_ptr TranslateTwoPointsCopy (GEOM::GEOM_Object_ptr theObject,
246                                                 GEOM::GEOM_Object_ptr thePoint1,
247                                                 GEOM::GEOM_Object_ptr thePoint2);
248   GEOM::GEOM_Object_ptr TranslateDXDYDZ (GEOM::GEOM_Object_ptr theObject,
249                                          CORBA::Double theDX, 
250                                          CORBA::Double theDY, 
251                                          CORBA::Double theDZ);
252   GEOM::GEOM_Object_ptr TranslateDXDYDZCopy (GEOM::GEOM_Object_ptr theObject,
253                                              CORBA::Double theDX, 
254                                              CORBA::Double theDY, 
255                                              CORBA::Double theDZ);
256   GEOM::GEOM_Object_ptr TranslateVector (GEOM::GEOM_Object_ptr theObject,
257                                          GEOM::GEOM_Object_ptr theVector);
258   GEOM::GEOM_Object_ptr TranslateVectorCopy (GEOM::GEOM_Object_ptr theObject,
259                                              GEOM::GEOM_Object_ptr theVector);
260   GEOM::GEOM_Object_ptr MultiTranslate1D (GEOM::GEOM_Object_ptr theObject,
261                                           GEOM::GEOM_Object_ptr theVector,
262                                           CORBA::Double theStep,
263                                           CORBA::Long theNbTimes);
264   GEOM::GEOM_Object_ptr MultiTranslate2D (GEOM::GEOM_Object_ptr theObject,
265                                           GEOM::GEOM_Object_ptr theVector1,
266                                           CORBA::Double theStep1,
267                                           CORBA::Long theNbTimes1,
268                                           GEOM::GEOM_Object_ptr theVector2,
269                                           CORBA::Double theStep2,
270                                           CORBA::Long theNbTimes2);
271   GEOM::GEOM_Object_ptr Rotate (GEOM::GEOM_Object_ptr theObject,
272                                 GEOM::GEOM_Object_ptr theAxis,
273                                 CORBA::Double theAngle);
274   GEOM::GEOM_Object_ptr RotateCopy (GEOM::GEOM_Object_ptr theObject,
275                                     GEOM::GEOM_Object_ptr theAxis,
276                                     CORBA::Double theAngle);
277   GEOM::GEOM_Object_ptr MultiRotate1D (GEOM::GEOM_Object_ptr theObject,
278                                        GEOM::GEOM_Object_ptr theAxis,
279                                        CORBA::Long theNbTimes);
280   GEOM::GEOM_Object_ptr MultiRotate2D (GEOM::GEOM_Object_ptr theObject,
281                                        GEOM::GEOM_Object_ptr theAxis,
282                                        CORBA::Double theAngle,
283                                        CORBA::Long theNbTimes1,
284                                        CORBA::Double theStep,
285                                        CORBA::Long theNbTimes2);
286   GEOM::GEOM_Object_ptr MirrorPlane (GEOM::GEOM_Object_ptr theObject, 
287                                      GEOM::GEOM_Object_ptr thePlane);
288   GEOM::GEOM_Object_ptr MirrorPlaneCopy (GEOM::GEOM_Object_ptr theObject, 
289                                          GEOM::GEOM_Object_ptr thePlane);
290   GEOM::GEOM_Object_ptr MirrorAxis (GEOM::GEOM_Object_ptr theObject, 
291                                     GEOM::GEOM_Object_ptr theAxis);
292   GEOM::GEOM_Object_ptr MirrorAxisCopy (GEOM::GEOM_Object_ptr theObject, 
293                                         GEOM::GEOM_Object_ptr theAxis);
294   GEOM::GEOM_Object_ptr MirrorPoint (GEOM::GEOM_Object_ptr theObject, 
295                                      GEOM::GEOM_Object_ptr thePoint);
296   GEOM::GEOM_Object_ptr MirrorPointCopy (GEOM::GEOM_Object_ptr theObject, 
297                                          GEOM::GEOM_Object_ptr thePoint);
298   GEOM::GEOM_Object_ptr OffsetShape (GEOM::GEOM_Object_ptr theObject, 
299                                      CORBA::Double theOffset);
300   GEOM::GEOM_Object_ptr OffsetShapeCopy (GEOM::GEOM_Object_ptr theObject, 
301                                          CORBA::Double theOffset);
302   GEOM::GEOM_Object_ptr ScaleShape (GEOM::GEOM_Object_ptr theObject, 
303                                     GEOM::GEOM_Object_ptr thePoint,
304                                     CORBA::Double theFactor);
305   GEOM::GEOM_Object_ptr ScaleShapeCopy (GEOM::GEOM_Object_ptr theObject, 
306                                         GEOM::GEOM_Object_ptr thePoint,
307                                         CORBA::Double theFactor);
308   GEOM::GEOM_Object_ptr PositionShape (GEOM::GEOM_Object_ptr theObject,
309                                        GEOM::GEOM_Object_ptr theStartLCS,
310                                        GEOM::GEOM_Object_ptr theEndLCS);
311   GEOM::GEOM_Object_ptr PositionShapeCopy (GEOM::GEOM_Object_ptr theObject,
312                                            GEOM::GEOM_Object_ptr theStartLCS,
313                                            GEOM::GEOM_Object_ptr theEndLCS);
314
315   //-----------------------------------------------------------//
316   // ShapesOperations                                          //
317   //-----------------------------------------------------------//
318   GEOM::GEOM_Object_ptr MakeEdge (GEOM::GEOM_Object_ptr thePnt1,
319                                   GEOM::GEOM_Object_ptr thePnt2);
320   GEOM::GEOM_Object_ptr MakeWire (GEOM::GEOM_List_ptr theEdgesAndWires);
321   GEOM::GEOM_Object_ptr MakeFace (GEOM::GEOM_Object_ptr theWire,
322                                   CORBA::Boolean isPlanarWanted);
323   GEOM::GEOM_Object_ptr MakeFaceWires (GEOM::GEOM_List_ptr theWires,
324                                        CORBA::Boolean isPlanarWanted);
325   GEOM::GEOM_Object_ptr MakeShell (GEOM::GEOM_List_ptr theFacesAndShells);
326   GEOM::GEOM_Object_ptr MakeSolidShell (GEOM::GEOM_Object_ptr theShell);
327   GEOM::GEOM_Object_ptr MakeSolidShells (GEOM::GEOM_List_ptr theShells);
328   GEOM::GEOM_Object_ptr MakeCompound (GEOM::GEOM_List_ptr theShapes);
329   GEOM::GEOM_Object_ptr MakeGlueFaces (GEOM::GEOM_Object_ptr theShape,
330                                        const CORBA::Double   theTolerance);
331   GEOM::GEOM_List_ptr MakeExplode (GEOM::GEOM_Object_ptr theShape,
332                                        const CORBA::Long theShapeType,
333                                        const CORBA::Boolean isSorted);
334   CORBA::Long NumberOfFaces (GEOM::GEOM_Object_ptr theShape);
335   CORBA::Long NumberOfEdges (GEOM::GEOM_Object_ptr theShape);
336   GEOM::GEOM_Object_ptr ChangeOrientation (GEOM::GEOM_Object_ptr theShape);
337
338   //-----------------------------------------------------------//
339   // BlocksOperations                                          //
340   //-----------------------------------------------------------//
341   GEOM::GEOM_Object_ptr MakeQuad4Vertices (GEOM::GEOM_Object_ptr thePnt1,
342                                            GEOM::GEOM_Object_ptr thePnt2,
343                                            GEOM::GEOM_Object_ptr thePnt3,
344                                            GEOM::GEOM_Object_ptr thePnt4);
345   GEOM::GEOM_Object_ptr MakeQuad (GEOM::GEOM_Object_ptr theEdge1,
346                                   GEOM::GEOM_Object_ptr theEdge2,
347                                   GEOM::GEOM_Object_ptr theEdge3,
348                                   GEOM::GEOM_Object_ptr theEdge4);
349   GEOM::GEOM_Object_ptr MakeQuad2Edges (GEOM::GEOM_Object_ptr theEdge1,
350                                         GEOM::GEOM_Object_ptr theEdge2);
351   GEOM::GEOM_Object_ptr MakeHexa (GEOM::GEOM_Object_ptr theFace1,
352                                   GEOM::GEOM_Object_ptr theFace2,
353                                   GEOM::GEOM_Object_ptr theFace3,
354                                   GEOM::GEOM_Object_ptr theFace4,
355                                   GEOM::GEOM_Object_ptr theFace5,
356                                   GEOM::GEOM_Object_ptr theFace6);
357   GEOM::GEOM_Object_ptr MakeHexa2Faces (GEOM::GEOM_Object_ptr theFace1,
358                                         GEOM::GEOM_Object_ptr theFace2);
359   GEOM::GEOM_Object_ptr GetPoint (GEOM::GEOM_Object_ptr theShape,
360                                   const CORBA::Double   theX,
361                                   const CORBA::Double   theY,
362                                   const CORBA::Double   theZ,
363                                   const CORBA::Double   theEpsilon);
364   GEOM::GEOM_Object_ptr GetEdge (GEOM::GEOM_Object_ptr theShape,
365                                  GEOM::GEOM_Object_ptr thePoint1,
366                                  GEOM::GEOM_Object_ptr thePoint2);
367   GEOM::GEOM_Object_ptr GetEdgeNearPoint (GEOM::GEOM_Object_ptr theShape,
368                                           GEOM::GEOM_Object_ptr thePoint);
369   GEOM::GEOM_Object_ptr GetFaceByPoints (GEOM::GEOM_Object_ptr theShape,
370                                          GEOM::GEOM_Object_ptr thePoint1,
371                                          GEOM::GEOM_Object_ptr thePoint2,
372                                          GEOM::GEOM_Object_ptr thePoint3,
373                                          GEOM::GEOM_Object_ptr thePoint4);
374   GEOM::GEOM_Object_ptr GetFaceByEdges (GEOM::GEOM_Object_ptr theShape,
375                                         GEOM::GEOM_Object_ptr theEdge1,
376                                         GEOM::GEOM_Object_ptr theEdge2);
377   GEOM::GEOM_Object_ptr GetOppositeFace (GEOM::GEOM_Object_ptr theBlock,
378                                          GEOM::GEOM_Object_ptr theFace);
379   GEOM::GEOM_Object_ptr GetFaceNearPoint (GEOM::GEOM_Object_ptr theShape,
380                                           GEOM::GEOM_Object_ptr thePoint);
381   GEOM::GEOM_Object_ptr GetFaceByNormale (GEOM::GEOM_Object_ptr theBlock,
382                                           GEOM::GEOM_Object_ptr theVector);
383   CORBA::Boolean IsCompoundOfBlocks (GEOM::GEOM_Object_ptr theCompound,
384                                      const CORBA::Long     theMinNbFaces,
385                                      const CORBA::Long     theMaxNbFaces,
386                                      CORBA::Long&          theNbBlocks);
387   CORBA::Boolean CheckCompoundOfBlocks (GEOM::GEOM_Object_ptr theCompound,
388                                         GEOM::GEOM_IBlocksOperations::BCErrors_out theErrors);
389   char* PrintBCErrors (GEOM::GEOM_Object_ptr theCompound,
390                        const GEOM::GEOM_IBlocksOperations::BCErrors& theErrors);
391   GEOM::GEOM_List_ptr ExplodeCompoundOfBlocks (GEOM::GEOM_Object_ptr theCompound,
392                                                    const CORBA::Long     theMinNbFaces,
393                                                    const CORBA::Long     theMaxNbFaces);
394   GEOM::GEOM_Object_ptr GetBlockNearPoint (GEOM::GEOM_Object_ptr theCompound,
395                                            GEOM::GEOM_Object_ptr thePoint);
396   GEOM::GEOM_Object_ptr GetBlockByParts (GEOM::GEOM_Object_ptr theCompound,
397                                          GEOM::GEOM_List_ptr theParts);
398   GEOM::GEOM_List_ptr GetBlocksByParts (GEOM::GEOM_Object_ptr theCompound,
399                                             GEOM::GEOM_List_ptr theParts);
400   GEOM::GEOM_Object_ptr MakeMultiTransformation1D (GEOM::GEOM_Object_ptr theBlock,
401                                                    const CORBA::Long     theDirFace1,
402                                                    const CORBA::Long     theDirFace2,
403                                                    const CORBA::Long     theNbTimes);
404   GEOM::GEOM_Object_ptr MakeMultiTransformation2D (GEOM::GEOM_Object_ptr theBlock,
405                                                    const CORBA::Long     theDirFace1U,
406                                                    const CORBA::Long     theDirFace2U,
407                                                    const CORBA::Long     theNbTimesU,
408                                                    const CORBA::Long     theDirFace1V,
409                                                    const CORBA::Long     theDirFace2V,
410                                                    const CORBA::Long     theNbTimesV);
411
412   //-----------------------------------------------------------//
413   // CurvesOperations                                          //
414   //-----------------------------------------------------------//
415   GEOM::GEOM_Object_ptr MakeCirclePntVecR (GEOM::GEOM_Object_ptr theCenter,
416                                            GEOM::GEOM_Object_ptr theVector,
417                                            CORBA::Double theR);
418   GEOM::GEOM_Object_ptr MakeCircleThreePnt (GEOM::GEOM_Object_ptr thePnt1,
419                                             GEOM::GEOM_Object_ptr thePnt2,
420                                             GEOM::GEOM_Object_ptr thePnt3);
421   GEOM::GEOM_Object_ptr MakeEllipse (GEOM::GEOM_Object_ptr theCenter,
422                                      GEOM::GEOM_Object_ptr theVector,
423                                      CORBA::Double theRMajor, CORBA::Double theRMinor);
424   GEOM::GEOM_Object_ptr MakeArc (GEOM::GEOM_Object_ptr thePnt1,
425                                  GEOM::GEOM_Object_ptr thePnt2,
426                                  GEOM::GEOM_Object_ptr thePnt3);
427   GEOM::GEOM_Object_ptr MakePolyline (GEOM::GEOM_List_ptr thePoints);
428   GEOM::GEOM_Object_ptr MakeSplineBezier (GEOM::GEOM_List_ptr thePoints);
429   GEOM::GEOM_Object_ptr MakeSplineInterpolation (GEOM::GEOM_List_ptr thePoints);
430   GEOM::GEOM_Object_ptr MakeSketcher (const char* theCommand, 
431                                       const GEOM::GEOM_List_ptr theWorkingPlane);
432
433   //-----------------------------------------------------------//
434   // LocalOperations                                           //
435   //-----------------------------------------------------------//
436   GEOM::GEOM_Object_ptr MakeFilletAll (GEOM::GEOM_Object_ptr theShape,
437                                        CORBA::Double theR);
438   GEOM::GEOM_Object_ptr MakeFilletEdges (GEOM::GEOM_Object_ptr theShape, CORBA::Double theR,
439                                          GEOM::GEOM_List_ptr theEdges);
440   GEOM::GEOM_Object_ptr MakeFilletFaces (GEOM::GEOM_Object_ptr theShape, CORBA::Double theR,
441                                          GEOM::GEOM_List_ptr theFaces);
442   GEOM::GEOM_Object_ptr MakeChamferAll (GEOM::GEOM_Object_ptr theShape, CORBA::Double theD);
443   GEOM::GEOM_Object_ptr MakeChamferEdge (GEOM::GEOM_Object_ptr theShape,
444                                          CORBA::Double theD1, CORBA::Double theD2,
445                                          CORBA::Long theFace1, CORBA::Long theFace2);
446   GEOM::GEOM_Object_ptr MakeChamferFaces (GEOM::GEOM_Object_ptr theShape,
447                                           CORBA::Double theD1, CORBA::Double theD2,
448                                           GEOM::GEOM_List_ptr theFaces);
449   GEOM::GEOM_Object_ptr MakeArchimede (GEOM::GEOM_Object_ptr theShape,
450                                        CORBA::Double theWeight,
451                                        CORBA::Double theWaterDensity,
452                                        CORBA::Double theMeshingDeflection);
453   CORBA::Long GetSubShapeIndex (GEOM::GEOM_Object_ptr theShape,
454                                 GEOM::GEOM_Object_ptr theSubShape);
455
456   //-----------------------------------------------------------//
457   // GroupOperations                                           //
458   //-----------------------------------------------------------//
459   GEOM::GEOM_Object_ptr CreateGroup (GEOM::GEOM_Object_ptr theMainShape, 
460                                      CORBA::Long theShapeType);
461   void AddObject (GEOM::GEOM_Object_ptr theGroup, 
462                   CORBA::Long theSubShapeId);
463   void RemoveObject (GEOM::GEOM_Object_ptr theGroup, 
464                      CORBA::Long theSubShapeId);
465   CORBA::Long GetType (GEOM::GEOM_Object_ptr theGroup);
466   GEOM::GEOM_Object_ptr GetMainShape (GEOM::GEOM_Object_ptr theGroup);
467   GEOM::GEOM_List_ptr GetObjects (GEOM::GEOM_Object_ptr theGroup);
468   
469 private:
470   SALOME_NamingService *  name_service; 
471   GEOM::GEOM_Gen_ptr      myGeomEngine;
472   CORBA::Long             myStudyID;
473   PortableServer::POA_var myPOA;
474   
475   GEOM::GEOM_IBasicOperations_ptr     myBasicOp;
476   GEOM::GEOM_I3DPrimOperations_ptr    my3DPrimOp;
477   GEOM::GEOM_IBooleanOperations_ptr   myBoolOp;
478   GEOM::GEOM_IInsertOperations_ptr    myInsOp;
479   GEOM::GEOM_ITransformOperations_ptr myTransfOp;
480   GEOM::GEOM_IShapesOperations_ptr    myShapesOp;
481   GEOM::GEOM_IBlocksOperations_ptr    myBlocksOp;
482   GEOM::GEOM_ICurvesOperations_ptr    myCurvesOp;
483   GEOM::GEOM_ILocalOperations_ptr     myLocalOp;
484   GEOM::GEOM_IGroupOperations_ptr     myGroupOp;
485
486 };
487
488 #endif