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