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