Salome HOME
13310d5209aff3448f9cc1cd3d7059fd1ce2f548
[modules/geom.git] / src / GEOM_I_Superv / GEOM_Superv_i.hh
1 // Copyright (C) 2007-2023  CEA/DEN, EDF R&D, OPEN CASCADE
2 //
3 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
4 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
5 //
6 // This library is free software; you can redistribute it and/or
7 // modify it under the terms of the GNU Lesser General Public
8 // License as published by the Free Software Foundation; either
9 // version 2.1 of the License, or (at your option) any later version.
10 //
11 // This library is distributed in the hope that it will be useful,
12 // but WITHOUT ANY WARRANTY; without even the implied warranty of
13 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
14 // Lesser General Public License for more details.
15 //
16 // You should have received a copy of the GNU Lesser General Public
17 // License along with this library; if not, write to the Free Software
18 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
19 //
20 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
21 //
22
23 #ifndef __GEOM_SUPERV_I_H__
24 #define __GEOM_SUPERV_I_H__
25
26 #include "GEOM_I_Superv.hxx"
27
28 // IDL headers
29 #include <SALOMEconfig.h>
30 #include CORBA_CLIENT_HEADER(GEOM_Gen)
31 #include CORBA_CLIENT_HEADER(AdvancedGEOM)
32 #include CORBA_CLIENT_HEADER(STLPlugin)
33 #include CORBA_CLIENT_HEADER(BREPPlugin)
34 #include CORBA_CLIENT_HEADER(STEPPlugin)
35 #include CORBA_CLIENT_HEADER(IGESPlugin)
36 #include CORBA_CLIENT_HEADER(XAOPlugin)
37 #ifdef WITH_VTK
38 #include CORBA_CLIENT_HEADER(VTKPlugin)
39 #endif
40 #include CORBA_SERVER_HEADER(GEOM_Superv)
41
42 #include "SALOME_Component_i.hxx"
43 #include "SALOME_NamingService.hxx"
44
45 #include "GEOM_List_i.hh"
46
47 class GEOM_I_SUPERV_EXPORT GEOM_Superv_i : public virtual POA_GEOM::GEOM_Superv,
48                                            public Engines_Component_i
49 {
50 public:
51   GEOM_Superv_i(CORBA::ORB_ptr orb,
52                 PortableServer::POA_ptr poa,
53                 PortableServer::ObjectId * contId,
54                 const char *instanceName,
55                 const char *interfaceName, bool withRegistry,
56                 SALOME_NamingService_Abstract *my_name_service);
57   ~GEOM_Superv_i();
58
59   // generic method to be put in a super class
60   void register_name(char * name);
61   void setGeomEngine();
62
63   void getBasicOp();
64   void get3DPrimOp();
65   void getBoolOp();
66   void getInsOp();
67   void getTransfOp();
68   void getShapesOp();
69   void getBlocksOp();
70   void getCurvesOp();
71   void getLocalOp();
72   void getMeasureOp();
73   void getGroupOp();
74   void getAdvancedOp();
75   void getSTLPluginOp();
76   void getBREPPluginOp();
77   void getSTEPPluginOp();
78   void getIGESPluginOp();
79   void getXAOPluginOp();
80 #ifdef WITH_VTK
81   void getVTKPluginOp();
82 #endif
83   PortableServer::ServantBase_var GetServant(CORBA::Object_ptr       theObject,
84                                              PortableServer::POA_ptr thePOA);
85
86   //-----------------------------------------------------------//
87   // Create ListOfGO and add items to it                       //
88   //-----------------------------------------------------------//
89   GEOM::GEOM_List_ptr CreateListOfGO();
90   void AddItemToListOfGO(GEOM::GEOM_List_ptr& theList,
91                          GEOM::GEOM_Object_ptr theObject);
92
93   //-----------------------------------------------------------//
94   // Create ListOfLong and add items to it                     //
95   //-----------------------------------------------------------//
96   GEOM::GEOM_List_ptr CreateListOfLong();
97   void AddItemToListOfLong(GEOM::GEOM_List_ptr& theList,
98                            CORBA::Long theObject);
99
100   //-----------------------------------------------------------//
101   // Create ListOfDouble and add items to it                   //
102   //-----------------------------------------------------------//
103   GEOM::GEOM_List_ptr CreateListOfDouble();
104   void AddItemToListOfDouble(GEOM::GEOM_List_ptr& theList,
105                              CORBA::Double theObject);
106
107   //-----------------------------------------------------------------------//
108   // Inherited methods from SALOMEDS::Driver                               //
109   //-----------------------------------------------------------------------//
110
111   SALOMEDS::TMPFile* Save(SALOMEDS::SComponent_ptr theComponent,
112                           const char* theURL,
113                           CORBA::Boolean isMultiFile);
114
115   SALOMEDS::TMPFile* SaveASCII(SALOMEDS::SComponent_ptr theComponent,
116                                const char* theURL,
117                                CORBA::Boolean isMultiFile);
118
119   CORBA::Boolean Load(SALOMEDS::SComponent_ptr theComponent,
120                       const SALOMEDS::TMPFile& theStream,
121                       const char* theURL,
122                       CORBA::Boolean isMultiFile);
123
124   CORBA::Boolean LoadASCII(SALOMEDS::SComponent_ptr theComponent,
125                            const SALOMEDS::TMPFile& theStream,
126                            const char* theURL,
127                            CORBA::Boolean isMultiFile);
128
129   void Close(SALOMEDS::SComponent_ptr theComponent);
130   char* ComponentDataType();
131
132
133   char* IORToLocalPersistentID(SALOMEDS::SObject_ptr theSObject,
134                                const char* IORString,
135                                CORBA::Boolean isMultiFile,
136                                CORBA::Boolean isASCII);
137   char* LocalPersistentIDToIOR(SALOMEDS::SObject_ptr theSObject,
138                                const char* aLocalPersistentID,
139                                CORBA::Boolean isMultiFile,
140                                CORBA::Boolean isASCII);
141
142   CORBA::Boolean CanPublishInStudy(CORBA::Object_ptr theIOR);
143   SALOMEDS::SObject_ptr PublishInStudy(SALOMEDS::SObject_ptr theSObject,
144                                        CORBA::Object_ptr theObject,
145                                        const char* theName) ;
146
147   GEOM::ListOfGO* PublishNamedShapesInStudy(//SALOMEDS::SObject_ptr theSObject,
148                                             CORBA::Object_ptr theObject);
149
150   CORBA::Boolean CanCopy(SALOMEDS::SObject_ptr theObject);
151   SALOMEDS::TMPFile* CopyFrom(SALOMEDS::SObject_ptr theObject, CORBA::Long& theObjectID);
152   CORBA::Boolean CanPaste(const char* theComponentName, CORBA::Long theObjectID);
153   SALOMEDS::SObject_ptr PasteInto(const SALOMEDS::TMPFile& theStream,
154                                   CORBA::Long theObjectID,
155                                   SALOMEDS::SObject_ptr theObject);
156
157   //-----------------------------------------------------------//
158   // Primitives Construction : BasicOperations                 //
159   //-----------------------------------------------------------//
160   GEOM::GEOM_Object_ptr MakePointXYZ (CORBA::Double theX,
161                                       CORBA::Double theY,
162                                       CORBA::Double theZ);
163   GEOM::GEOM_Object_ptr MakePointWithReference (GEOM::GEOM_Object_ptr theReference,
164                                                 CORBA::Double theX,
165                                                 CORBA::Double theY,
166                                                 CORBA::Double theZ);
167   GEOM::GEOM_Object_ptr MakePointOnCurve (GEOM::GEOM_Object_ptr theRefCurve,
168                                           CORBA::Double theParameter);
169   GEOM::GEOM_Object_ptr MakePointOnCurveByLength (GEOM::GEOM_Object_ptr theRefCurve,
170                                                   CORBA::Double theLength,
171                                                   GEOM::GEOM_Object_ptr theStartPoint);
172   GEOM::GEOM_Object_ptr MakePointOnCurveByCoord (GEOM::GEOM_Object_ptr theRefCurve,
173                                                  CORBA::Double theXParameter,
174                                                  CORBA::Double theYParameter,
175                                                  CORBA::Double theZParameter);
176   GEOM::GEOM_Object_ptr MakePointOnSurface (GEOM::GEOM_Object_ptr theRefSurface,
177                                             CORBA::Double theUParameter,
178                                             CORBA::Double theVParameter);
179   GEOM::GEOM_Object_ptr MakePointOnSurfaceByCoord (GEOM::GEOM_Object_ptr theRefSurface,
180                                                    CORBA::Double theXParameter,
181                                                    CORBA::Double theYParameter,
182                                                    CORBA::Double theZParameter);
183   GEOM::GEOM_Object_ptr MakePointOnLinesIntersection (GEOM::GEOM_Object_ptr theRefLine1,
184                                                       GEOM::GEOM_Object_ptr theRefLine2);
185   GEOM::GEOM_Object_ptr MakeTangentOnCurve (GEOM::GEOM_Object_ptr theRefCurve,
186                                              CORBA::Double theParameter);
187   GEOM::GEOM_Object_ptr MakeVectorDXDYDZ (CORBA::Double theDX,
188                                           CORBA::Double theDY,
189                                           CORBA::Double theDZ);
190   GEOM::GEOM_Object_ptr MakeVectorTwoPnt (GEOM::GEOM_Object_ptr thePnt1,
191                                           GEOM::GEOM_Object_ptr thePnt2);
192   GEOM::GEOM_Object_ptr MakeLineTwoPnt (GEOM::GEOM_Object_ptr thePnt1,
193                                         GEOM::GEOM_Object_ptr thePnt2);
194   GEOM::GEOM_Object_ptr MakeLineTwoFaces (GEOM::GEOM_Object_ptr theFace1,
195                                           GEOM::GEOM_Object_ptr theFace2);
196   GEOM::GEOM_Object_ptr MakePlaneThreePnt (GEOM::GEOM_Object_ptr thePnt1,
197                                            GEOM::GEOM_Object_ptr thePnt2,
198                                            GEOM::GEOM_Object_ptr thePnt3,
199                                            CORBA::Double theTrimSize);
200   GEOM::GEOM_Object_ptr MakePlanePntVec (GEOM::GEOM_Object_ptr thePnt,
201                                          GEOM::GEOM_Object_ptr theVec,
202                                          CORBA::Double theTrimSize);
203   GEOM::GEOM_Object_ptr MakePlaneFace (GEOM::GEOM_Object_ptr theFace,
204                                        CORBA::Double theTrimSize);
205   GEOM::GEOM_Object_ptr MakePlane2Vec (GEOM::GEOM_Object_ptr theVec1,
206                                        GEOM::GEOM_Object_ptr theVec2,
207                                        CORBA::Double theTrimSize);
208   GEOM::GEOM_Object_ptr MakePlaneLCS (GEOM::GEOM_Object_ptr theLCS,
209                                       CORBA::Double theTrimSize,
210                                       CORBA::Double theOrientation);
211   GEOM::GEOM_Object_ptr MakeMarker (CORBA::Double theOX , CORBA::Double theOY , CORBA::Double theOZ,
212                                     CORBA::Double theXDX, CORBA::Double theXDY, CORBA::Double theXDZ,
213                                     CORBA::Double theYDX, CORBA::Double theYDY, CORBA::Double theYDZ);
214
215   GEOM::GEOM_Object_ptr MakeMarkerFromShape (GEOM::GEOM_Object_ptr theShape);
216
217   GEOM::GEOM_Object_ptr MakeMarkerPntTwoVec (GEOM::GEOM_Object_ptr theOrigin,
218                                              GEOM::GEOM_Object_ptr theXVec,
219                                              GEOM::GEOM_Object_ptr theYVec);
220
221   GEOM::GEOM_Object_ptr MakeTangentPlaneOnFace (GEOM::GEOM_Object_ptr theFace,
222                                                  CORBA::Double theParameterU,
223                                                  CORBA::Double theParameterV,
224                                                  CORBA::Double theTrimSize);
225
226   //-----------------------------------------------------------//
227   // Primitives Construction : 3DPrimOperations                //
228   //-----------------------------------------------------------//
229   GEOM::GEOM_Object_ptr MakeBox (CORBA::Double theX1,
230                                  CORBA::Double theY1,
231                                  CORBA::Double theZ1,
232                                  CORBA::Double theX2,
233                                  CORBA::Double theY2,
234                                  CORBA::Double theZ2);
235   GEOM::GEOM_Object_ptr MakeBoxDXDYDZ (CORBA::Double theDX,
236                                        CORBA::Double theDY,
237                                        CORBA::Double theDZ);
238   GEOM::GEOM_Object_ptr MakeBoxTwoPnt (GEOM::GEOM_Object_ptr thePnt1,
239                                        GEOM::GEOM_Object_ptr thePnt2);
240   GEOM::GEOM_Object_ptr MakeFaceHW (CORBA::Double theH,
241                                     CORBA::Double theW,
242                                     CORBA::Short  theOrientation);
243   GEOM::GEOM_Object_ptr MakeFaceObjHW (GEOM::GEOM_Object_ptr theObj,
244                                        CORBA::Double theH,
245                                        CORBA::Double theW);
246   GEOM::GEOM_Object_ptr MakeDiskPntVecR (GEOM::GEOM_Object_ptr theCenter,
247                                          GEOM::GEOM_Object_ptr theVector,
248                                          CORBA::Double theR);
249   GEOM::GEOM_Object_ptr MakeDiskThreePnt (GEOM::GEOM_Object_ptr thePnt1,
250                                           GEOM::GEOM_Object_ptr thePnt2,
251                                           GEOM::GEOM_Object_ptr thePnt3);
252   GEOM::GEOM_Object_ptr MakeDiskR (CORBA::Double theR,
253                                    CORBA::Short  theOrientation);
254   GEOM::GEOM_Object_ptr MakeCylinderPntVecRH (GEOM::GEOM_Object_ptr thePnt,
255                                               GEOM::GEOM_Object_ptr theAxis,
256                                               CORBA::Double theRadius,
257                                               CORBA::Double theHeight);
258   GEOM::GEOM_Object_ptr MakeCylinderRH (CORBA::Double theR,
259                                         CORBA::Double theH);
260   GEOM::GEOM_Object_ptr MakeCylinderPntVecRHA (GEOM::GEOM_Object_ptr thePnt,
261                                                GEOM::GEOM_Object_ptr theAxis,
262                                                CORBA::Double theRadius,
263                                                CORBA::Double theHeight,
264                                                CORBA::Double theAngle);
265   GEOM::GEOM_Object_ptr MakeCylinderRHA (CORBA::Double theR,
266                                          CORBA::Double theH,
267                                          CORBA::Double theA);                                   
268   GEOM::GEOM_Object_ptr MakeSphere (CORBA::Double theX,
269                                     CORBA::Double theY,
270                                     CORBA::Double theZ,
271                                     CORBA::Double theRadius);
272   GEOM::GEOM_Object_ptr MakeSphereR (CORBA::Double theR);
273   GEOM::GEOM_Object_ptr MakeSpherePntR (GEOM::GEOM_Object_ptr thePnt,
274                                         CORBA::Double theR);
275   GEOM::GEOM_Object_ptr MakeTorusPntVecRR (GEOM::GEOM_Object_ptr thePnt,
276                                            GEOM::GEOM_Object_ptr theVec,
277                                            CORBA::Double theRMajor,
278                                            CORBA::Double theRMinor);
279   GEOM::GEOM_Object_ptr MakeTorusRR (CORBA::Double theRMajor,
280                                      CORBA::Double theRMinor);
281   GEOM::GEOM_Object_ptr MakeConePntVecR1R2H (GEOM::GEOM_Object_ptr thePnt,
282                                              GEOM::GEOM_Object_ptr theAxis,
283                                              CORBA::Double theR1,
284                                              CORBA::Double theR2,
285                                              CORBA::Double theHeight);
286   GEOM::GEOM_Object_ptr MakeConeR1R2H (CORBA::Double theR1,
287                                        CORBA::Double theR2,
288                                        CORBA::Double theHeight);
289   GEOM::GEOM_Object_ptr MakePrismVecH (GEOM::GEOM_Object_ptr theBase,
290                                        GEOM::GEOM_Object_ptr theVec,
291                                        CORBA::Double         theH);
292   GEOM::GEOM_Object_ptr MakePrismVecH2Ways (GEOM::GEOM_Object_ptr theBase,
293                                             GEOM::GEOM_Object_ptr theVec,
294                                             CORBA::Double         theH);
295   GEOM::GEOM_Object_ptr MakePrismTwoPnt (GEOM::GEOM_Object_ptr theBase,
296                                          GEOM::GEOM_Object_ptr thePoint1,
297                                          GEOM::GEOM_Object_ptr thePoint2);
298   GEOM::GEOM_Object_ptr MakePrismTwoPnt2Ways (GEOM::GEOM_Object_ptr theBase,
299                                               GEOM::GEOM_Object_ptr thePoint1,
300                                               GEOM::GEOM_Object_ptr thePoint2);
301   GEOM::GEOM_Object_ptr MakePrismDXDYDZ (GEOM::GEOM_Object_ptr theBase,
302                                          CORBA::Double         theDX,
303                                          CORBA::Double         theDY,
304                                          CORBA::Double         theDZ);
305   GEOM::GEOM_Object_ptr MakePrismDXDYDZ2Ways (GEOM::GEOM_Object_ptr theBase,
306                                               CORBA::Double         theDX,
307                                               CORBA::Double         theDY,
308                                               CORBA::Double         theDZ);
309   GEOM::GEOM_Object_ptr MakePipe (GEOM::GEOM_Object_ptr theBase,
310                                   GEOM::GEOM_Object_ptr thePath);
311   GEOM::GEOM_Object_ptr MakeRevolutionAxisAngle (GEOM::GEOM_Object_ptr theBase,
312                                                  GEOM::GEOM_Object_ptr theAxis,
313                                                  CORBA::Double theAngle);
314   GEOM::GEOM_Object_ptr MakeRevolutionAxisAngle2Ways (GEOM::GEOM_Object_ptr theBase,
315                                                       GEOM::GEOM_Object_ptr theAxis,
316                                                       CORBA::Double theAngle);
317   GEOM::GEOM_Object_ptr MakeFilling (GEOM::GEOM_Object_ptr theShape,
318                                      CORBA::Long theMinDeg, CORBA::Long theMaxDeg,
319                                      CORBA::Double theTol2D, CORBA::Double theTol3D,
320                                      CORBA::Long theNbIter,
321                                      GEOM::filling_oper_method theMethod,
322                                      CORBA::Boolean theApprox);
323
324   GEOM::GEOM_Object_ptr MakeThruSections(const GEOM::ListOfGO& theSeqSections,
325                                          CORBA::Boolean theModeSolid,
326                                          CORBA::Double thePreci,
327                                          CORBA::Boolean theRuled);
328
329   GEOM::GEOM_Object_ptr MakePipeWithDifferentSections(const GEOM::ListOfGO& theBases,
330                                                       const GEOM::ListOfGO& theLocations,
331                                                       GEOM::GEOM_Object_ptr thePath,
332                                                       CORBA::Boolean theWithContact,
333                                                       CORBA::Boolean theWithCorrections);
334
335   GEOM::GEOM_Object_ptr MakePipeWithShellSections(const GEOM::ListOfGO& theBases,
336                                                   const GEOM::ListOfGO& theSubBases,
337                                                   const GEOM::ListOfGO& theLocations,
338                                                   GEOM::GEOM_Object_ptr thePath,
339                                                   CORBA::Boolean theWithContact,
340                                                   CORBA::Boolean theWithCorrections);
341
342   GEOM::GEOM_Object_ptr MakePipeShellsWithoutPath(const GEOM::ListOfGO& theBases,
343                                                   const GEOM::ListOfGO& theLocations);
344
345   GEOM::GEOM_Object_ptr MakePipeBiNormalAlongVector (GEOM::GEOM_Object_ptr theBase,
346                                                      GEOM::GEOM_Object_ptr thePath,
347                                                      GEOM::GEOM_Object_ptr theVec);
348
349   //-----------------------------------------------------------//
350   // BooleanOperations                                         //
351   //-----------------------------------------------------------//
352   GEOM::GEOM_Object_ptr MakeBoolean (GEOM::GEOM_Object_ptr theShape1,
353                                      GEOM::GEOM_Object_ptr theShape2,
354                                      CORBA::Long           theOperation);
355   GEOM::GEOM_Object_ptr MakeFuse (GEOM::GEOM_Object_ptr theShape1,
356                                   GEOM::GEOM_Object_ptr theShape2);
357   GEOM::GEOM_Object_ptr MakeCommon (GEOM::GEOM_Object_ptr theShape1,
358                                     GEOM::GEOM_Object_ptr theShape2);
359   GEOM::GEOM_Object_ptr MakeCut (GEOM::GEOM_Object_ptr theShape1,
360                                  GEOM::GEOM_Object_ptr theShape2);
361   GEOM::GEOM_Object_ptr MakeSection (GEOM::GEOM_Object_ptr theShape1,
362                                      GEOM::GEOM_Object_ptr theShape2);
363   GEOM::GEOM_Object_ptr MakePartition (GEOM::GEOM_List_ptr   theShapes,
364                                        GEOM::GEOM_List_ptr   theTools,
365                                        GEOM::GEOM_List_ptr   theKeepInside,
366                                        GEOM::GEOM_List_ptr   theRemoveInside,
367                                        CORBA::Short      theLimit,
368                                        CORBA::Boolean    theRemoveWebs,
369                                        GEOM::GEOM_List_ptr theMaterials,
370                                        CORBA::Short theKeepNonlimitShapes);
371   GEOM::GEOM_Object_ptr MakeHalfPartition (GEOM::GEOM_Object_ptr theShape,
372                                            GEOM::GEOM_Object_ptr thePlane);
373
374   //-----------------------------------------------------------//
375   // InsertOperations                                          //
376   //-----------------------------------------------------------//
377   GEOM::GEOM_Object_ptr MakeCopy (GEOM::GEOM_Object_ptr theOriginal);
378   void Export (GEOM::GEOM_Object_ptr theObject,
379                const char*           theFileName,
380                const char*           theFormatName);
381   GEOM::GEOM_Object_ptr ImportFile (const char* theFileName,
382                                     const char* theFormatName);
383
384   //-----------------------------------------------------------//
385   // TransformOperations                                       //
386   //-----------------------------------------------------------//
387   GEOM::GEOM_Object_ptr TranslateTwoPoints (GEOM::GEOM_Object_ptr theObject,
388                                             GEOM::GEOM_Object_ptr thePoint1,
389                                             GEOM::GEOM_Object_ptr thePoint2);
390   GEOM::GEOM_Object_ptr TranslateTwoPointsCopy (GEOM::GEOM_Object_ptr theObject,
391                                                 GEOM::GEOM_Object_ptr thePoint1,
392                                                 GEOM::GEOM_Object_ptr thePoint2);
393   GEOM::GEOM_Object_ptr TranslateDXDYDZ (GEOM::GEOM_Object_ptr theObject,
394                                          CORBA::Double theDX,
395                                          CORBA::Double theDY,
396                                          CORBA::Double theDZ);
397   GEOM::GEOM_Object_ptr TranslateDXDYDZCopy (GEOM::GEOM_Object_ptr theObject,
398                                              CORBA::Double theDX,
399                                              CORBA::Double theDY,
400                                              CORBA::Double theDZ);
401   GEOM::GEOM_Object_ptr TranslateVector (GEOM::GEOM_Object_ptr theObject,
402                                          GEOM::GEOM_Object_ptr theVector);
403   GEOM::GEOM_Object_ptr TranslateVectorCopy (GEOM::GEOM_Object_ptr theObject,
404                                              GEOM::GEOM_Object_ptr theVector);
405   GEOM::GEOM_Object_ptr TranslateVectorDistance (GEOM::GEOM_Object_ptr theObject,
406                                                  GEOM::GEOM_Object_ptr theVector,
407                                                  CORBA::Double theDistance,
408                                                  CORBA::Boolean theCopy);
409   GEOM::GEOM_Object_ptr MultiTranslate1D (GEOM::GEOM_Object_ptr theObject,
410                                           GEOM::GEOM_Object_ptr theVector,
411                                           CORBA::Double theStep,
412                                           CORBA::Long theNbTimes);
413   GEOM::GEOM_Object_ptr MultiTranslate2D (GEOM::GEOM_Object_ptr theObject,
414                                           GEOM::GEOM_Object_ptr theVector1,
415                                           CORBA::Double theStep1,
416                                           CORBA::Long theNbTimes1,
417                                           GEOM::GEOM_Object_ptr theVector2,
418                                           CORBA::Double theStep2,
419                                           CORBA::Long theNbTimes2);
420   GEOM::GEOM_Object_ptr Rotate (GEOM::GEOM_Object_ptr theObject,
421                                 GEOM::GEOM_Object_ptr theAxis,
422                                 CORBA::Double theAngle);
423   GEOM::GEOM_Object_ptr RotateCopy (GEOM::GEOM_Object_ptr theObject,
424                                     GEOM::GEOM_Object_ptr theAxis,
425                                     CORBA::Double theAngle);
426
427   GEOM::GEOM_Object_ptr RotateThreePoints (GEOM::GEOM_Object_ptr theObject,
428                                            GEOM::GEOM_Object_ptr theCentPoint,
429                                            GEOM::GEOM_Object_ptr thePoint1,
430                                            GEOM::GEOM_Object_ptr thePoint2);
431
432   GEOM::GEOM_Object_ptr RotateThreePointsCopy (GEOM::GEOM_Object_ptr theObject,
433                                                GEOM::GEOM_Object_ptr theCentPoint,
434                                                GEOM::GEOM_Object_ptr thePoint1,
435                                                GEOM::GEOM_Object_ptr thePoint2);
436
437   GEOM::GEOM_Object_ptr MultiRotate1D (GEOM::GEOM_Object_ptr theObject,
438                                        GEOM::GEOM_Object_ptr theAxis,
439                                        CORBA::Long theNbTimes);
440   GEOM::GEOM_Object_ptr MultiRotate2D (GEOM::GEOM_Object_ptr theObject,
441                                        GEOM::GEOM_Object_ptr theAxis,
442                                        CORBA::Double theAngle,
443                                        CORBA::Long theNbTimes1,
444                                        CORBA::Double theStep,
445                                        CORBA::Long theNbTimes2);
446   GEOM::GEOM_Object_ptr MirrorPlane (GEOM::GEOM_Object_ptr theObject,
447                                      GEOM::GEOM_Object_ptr thePlane);
448   GEOM::GEOM_Object_ptr MirrorPlaneCopy (GEOM::GEOM_Object_ptr theObject,
449                                          GEOM::GEOM_Object_ptr thePlane);
450   GEOM::GEOM_Object_ptr MirrorAxis (GEOM::GEOM_Object_ptr theObject,
451                                     GEOM::GEOM_Object_ptr theAxis);
452   GEOM::GEOM_Object_ptr MirrorAxisCopy (GEOM::GEOM_Object_ptr theObject,
453                                         GEOM::GEOM_Object_ptr theAxis);
454   GEOM::GEOM_Object_ptr MirrorPoint (GEOM::GEOM_Object_ptr theObject,
455                                      GEOM::GEOM_Object_ptr thePoint);
456   GEOM::GEOM_Object_ptr MirrorPointCopy (GEOM::GEOM_Object_ptr theObject,
457                                          GEOM::GEOM_Object_ptr thePoint);
458   GEOM::GEOM_Object_ptr OffsetShape (GEOM::GEOM_Object_ptr theObject,
459                                      CORBA::Double theOffset);
460   GEOM::GEOM_Object_ptr OffsetShapeCopy (GEOM::GEOM_Object_ptr theObject,
461                                          CORBA::Double theOffset);
462   GEOM::GEOM_Object_ptr ScaleShape (GEOM::GEOM_Object_ptr theObject,
463                                     GEOM::GEOM_Object_ptr thePoint,
464                                     CORBA::Double theFactor);
465   GEOM::GEOM_Object_ptr ScaleShapeCopy (GEOM::GEOM_Object_ptr theObject,
466                                         GEOM::GEOM_Object_ptr thePoint,
467                                         CORBA::Double theFactor);
468   GEOM::GEOM_Object_ptr ScaleShapeAlongAxes (GEOM::GEOM_Object_ptr theObject,
469                                              GEOM::GEOM_Object_ptr thePoint,
470                                              CORBA::Double theFactorX,
471                                              CORBA::Double theFactorY,
472                                              CORBA::Double theFactorZ);
473   GEOM::GEOM_Object_ptr ScaleShapeAlongAxesCopy (GEOM::GEOM_Object_ptr theObject,
474                                                  GEOM::GEOM_Object_ptr thePoint,
475                                                  CORBA::Double theFactorX,
476                                                  CORBA::Double theFactorY,
477                                                  CORBA::Double theFactorZ);
478   GEOM::GEOM_Object_ptr PositionShape (GEOM::GEOM_Object_ptr theObject,
479                                        GEOM::GEOM_Object_ptr theStartLCS,
480                                        GEOM::GEOM_Object_ptr theEndLCS);
481   GEOM::GEOM_Object_ptr PositionShapeCopy (GEOM::GEOM_Object_ptr theObject,
482                                            GEOM::GEOM_Object_ptr theStartLCS,
483                                            GEOM::GEOM_Object_ptr theEndLCS);
484   GEOM::GEOM_Object_ptr PositionAlongPath (GEOM::GEOM_Object_ptr theObject,
485                                            GEOM::GEOM_Object_ptr thePath,
486                                            CORBA::Double         theDistance,
487                                            CORBA::Boolean        theCopy,
488                                            CORBA::Boolean        theReverse);
489
490   //-----------------------------------------------------------//
491   // ShapesOperations                                          //
492   //-----------------------------------------------------------//
493   GEOM::GEOM_Object_ptr MakeEdge (GEOM::GEOM_Object_ptr thePnt1,
494                                   GEOM::GEOM_Object_ptr thePnt2);
495   GEOM::GEOM_Object_ptr MakeEdgeOnCurveByLength (GEOM::GEOM_Object_ptr theRefCurve,
496                                                  CORBA::Double theLength,
497                                                  GEOM::GEOM_Object_ptr theStartPoint);
498   GEOM::GEOM_Object_ptr MakeWire (GEOM::GEOM_List_ptr theEdgesAndWires,
499                                   CORBA::Double       theTolerance);
500   GEOM::GEOM_Object_ptr MakeFace (GEOM::GEOM_Object_ptr theWire,
501                                   CORBA::Boolean isPlanarWanted);
502   GEOM::GEOM_Object_ptr MakeFaceWires (GEOM::GEOM_List_ptr theWires,
503                                        CORBA::Boolean isPlanarWanted);
504   GEOM::GEOM_Object_ptr MakeFaceWithConstraints (GEOM::GEOM_List_ptr theConstraints);
505   GEOM::GEOM_Object_ptr MakeShell (GEOM::GEOM_List_ptr theFacesAndShells);
506   GEOM::GEOM_Object_ptr MakeSolidShell (GEOM::GEOM_Object_ptr theShell);
507   GEOM::GEOM_Object_ptr MakeSolidShells (GEOM::GEOM_List_ptr theShells);
508   GEOM::GEOM_Object_ptr MakeCompound (GEOM::GEOM_List_ptr theShapes);
509   GEOM::GEOM_Object_ptr MakeSolidFromConnectedFaces (GEOM::GEOM_List_ptr theFacesOrShells,
510                                                      CORBA::Boolean isIntersect);
511   GEOM::GEOM_Object_ptr MakeGlueFaces (GEOM::GEOM_Object_ptr theShape,
512                                        CORBA::Double theTolerance,
513                                        CORBA::Boolean doKeepNonSolids);
514   GEOM::GEOM_List_ptr GetGlueFaces (GEOM::GEOM_Object_ptr theShape,
515                                     CORBA::Double theTolerance);
516   GEOM::GEOM_Object_ptr MakeGlueFacesByList (GEOM::GEOM_Object_ptr theShape,
517                                              CORBA::Double theTolerance,
518                                              const GEOM::ListOfGO& theFaces,
519                                              CORBA::Boolean doKeepNonSolids,
520                                              CORBA::Boolean doGlueAllEdges);
521   GEOM::GEOM_List_ptr MakeExplode (GEOM::GEOM_Object_ptr theShape,
522                                        CORBA::Long theShapeType,
523                                        CORBA::Boolean isSorted);
524   CORBA::Long NumberOfFaces (GEOM::GEOM_Object_ptr theShape);
525   CORBA::Long NumberOfEdges (GEOM::GEOM_Object_ptr theShape);
526   GEOM::GEOM_Object_ptr ChangeOrientation (GEOM::GEOM_Object_ptr theShape);
527
528   GEOM::GEOM_List_ptr GetShapesOnShape (GEOM::GEOM_Object_ptr theCheckShape,
529                                           GEOM::GEOM_Object_ptr theShape,
530                                           CORBA::Short theShapeType,
531                                           GEOM::shape_state theState);
532   GEOM::GEOM_Object_ptr GetShapesOnShapeAsCompound
533                                        (GEOM::GEOM_Object_ptr theCheckShape,
534                                           GEOM::GEOM_Object_ptr theShape,
535                                           CORBA::Short theShapeType,
536                                           GEOM::shape_state theState);
537
538   //-----------------------------------------------------------//
539   // BlocksOperations                                          //
540   //-----------------------------------------------------------//
541   GEOM::GEOM_Object_ptr MakeQuad4Vertices (GEOM::GEOM_Object_ptr thePnt1,
542                                            GEOM::GEOM_Object_ptr thePnt2,
543                                            GEOM::GEOM_Object_ptr thePnt3,
544                                            GEOM::GEOM_Object_ptr thePnt4);
545   GEOM::GEOM_Object_ptr MakeQuad (GEOM::GEOM_Object_ptr theEdge1,
546                                   GEOM::GEOM_Object_ptr theEdge2,
547                                   GEOM::GEOM_Object_ptr theEdge3,
548                                   GEOM::GEOM_Object_ptr theEdge4);
549   GEOM::GEOM_Object_ptr MakeQuad2Edges (GEOM::GEOM_Object_ptr theEdge1,
550                                         GEOM::GEOM_Object_ptr theEdge2);
551   GEOM::GEOM_Object_ptr MakeHexa (GEOM::GEOM_Object_ptr theFace1,
552                                   GEOM::GEOM_Object_ptr theFace2,
553                                   GEOM::GEOM_Object_ptr theFace3,
554                                   GEOM::GEOM_Object_ptr theFace4,
555                                   GEOM::GEOM_Object_ptr theFace5,
556                                   GEOM::GEOM_Object_ptr theFace6);
557   GEOM::GEOM_Object_ptr MakeHexa2Faces (GEOM::GEOM_Object_ptr theFace1,
558                                         GEOM::GEOM_Object_ptr theFace2);
559   GEOM::GEOM_Object_ptr GetPoint (GEOM::GEOM_Object_ptr theShape,
560                                   CORBA::Double   theX,
561                                   CORBA::Double   theY,
562                                   CORBA::Double   theZ,
563                                   CORBA::Double   theEpsilon);
564   GEOM::GEOM_Object_ptr GetEdge (GEOM::GEOM_Object_ptr theShape,
565                                  GEOM::GEOM_Object_ptr thePoint1,
566                                  GEOM::GEOM_Object_ptr thePoint2);
567   GEOM::GEOM_Object_ptr GetEdgeNearPoint (GEOM::GEOM_Object_ptr theShape,
568                                           GEOM::GEOM_Object_ptr thePoint);
569   GEOM::GEOM_Object_ptr GetFaceByPoints (GEOM::GEOM_Object_ptr theShape,
570                                          GEOM::GEOM_Object_ptr thePoint1,
571                                          GEOM::GEOM_Object_ptr thePoint2,
572                                          GEOM::GEOM_Object_ptr thePoint3,
573                                          GEOM::GEOM_Object_ptr thePoint4);
574   GEOM::GEOM_Object_ptr GetFaceByEdges (GEOM::GEOM_Object_ptr theShape,
575                                         GEOM::GEOM_Object_ptr theEdge1,
576                                         GEOM::GEOM_Object_ptr theEdge2);
577   GEOM::GEOM_Object_ptr GetOppositeFace (GEOM::GEOM_Object_ptr theBlock,
578                                          GEOM::GEOM_Object_ptr theFace);
579   GEOM::GEOM_Object_ptr GetFaceNearPoint (GEOM::GEOM_Object_ptr theShape,
580                                           GEOM::GEOM_Object_ptr thePoint);
581   GEOM::GEOM_Object_ptr GetFaceByNormale (GEOM::GEOM_Object_ptr theBlock,
582                                           GEOM::GEOM_Object_ptr theVector);
583   CORBA::Boolean IsCompoundOfBlocks (GEOM::GEOM_Object_ptr theCompound,
584                                      CORBA::Long     theMinNbFaces,
585                                      CORBA::Long     theMaxNbFaces,
586                                      CORBA::Long&          theNbBlocks);
587   CORBA::Boolean CheckCompoundOfBlocks (GEOM::GEOM_Object_ptr theCompound,
588                                         GEOM::GEOM_IBlocksOperations::BCErrors_out theErrors);
589   char* PrintBCErrors (GEOM::GEOM_Object_ptr theCompound,
590                        const GEOM::GEOM_IBlocksOperations::BCErrors& theErrors);
591   GEOM::GEOM_List_ptr ExplodeCompoundOfBlocks (GEOM::GEOM_Object_ptr theCompound,
592                                                    CORBA::Long     theMinNbFaces,
593                                                    CORBA::Long     theMaxNbFaces);
594   GEOM::GEOM_Object_ptr GetBlockNearPoint (GEOM::GEOM_Object_ptr theCompound,
595                                            GEOM::GEOM_Object_ptr thePoint);
596   GEOM::GEOM_Object_ptr GetBlockByParts (GEOM::GEOM_Object_ptr theCompound,
597                                          GEOM::GEOM_List_ptr theParts);
598   GEOM::GEOM_List_ptr GetBlocksByParts (GEOM::GEOM_Object_ptr theCompound,
599                                             GEOM::GEOM_List_ptr theParts);
600   GEOM::GEOM_Object_ptr MakeMultiTransformation1D (GEOM::GEOM_Object_ptr theBlock,
601                                                    CORBA::Long     theDirFace1,
602                                                    CORBA::Long     theDirFace2,
603                                                    CORBA::Long     theNbTimes);
604   GEOM::GEOM_Object_ptr MakeMultiTransformation2D (GEOM::GEOM_Object_ptr theBlock,
605                                                    CORBA::Long     theDirFace1U,
606                                                    CORBA::Long     theDirFace2U,
607                                                    CORBA::Long     theNbTimesU,
608                                                    CORBA::Long     theDirFace1V,
609                                                    CORBA::Long     theDirFace2V,
610                                                    CORBA::Long     theNbTimesV);
611
612   //-----------------------------------------------------------//
613   // CurvesOperations                                          //
614   //-----------------------------------------------------------//
615   GEOM::GEOM_Object_ptr MakeCirclePntVecR (GEOM::GEOM_Object_ptr theCenter,
616                                            GEOM::GEOM_Object_ptr theVector,
617                                            CORBA::Double theR);
618   GEOM::GEOM_Object_ptr MakeCircleThreePnt (GEOM::GEOM_Object_ptr thePnt1,
619                                             GEOM::GEOM_Object_ptr thePnt2,
620                                             GEOM::GEOM_Object_ptr thePnt3);
621   GEOM::GEOM_Object_ptr MakeCircleCenter2Pnt (GEOM::GEOM_Object_ptr thePnt1,
622                                               GEOM::GEOM_Object_ptr thePnt2,
623                                               GEOM::GEOM_Object_ptr thePnt3);
624   GEOM::GEOM_Object_ptr MakeEllipse (GEOM::GEOM_Object_ptr theCenter,
625                                      GEOM::GEOM_Object_ptr theVector,
626                                      CORBA::Double theRMajor, CORBA::Double theRMinor);
627   GEOM::GEOM_Object_ptr MakeEllipseVec (GEOM::GEOM_Object_ptr theCenter,
628                                         GEOM::GEOM_Object_ptr theVector,
629                                         CORBA::Double theRMajor, CORBA::Double theRMinor,
630                                         GEOM::GEOM_Object_ptr theVectorMajor);
631   GEOM::GEOM_Object_ptr MakeArc (GEOM::GEOM_Object_ptr thePnt1,
632                                  GEOM::GEOM_Object_ptr thePnt2,
633                                  GEOM::GEOM_Object_ptr thePnt3);
634   GEOM::GEOM_Object_ptr MakeArcCenter (GEOM::GEOM_Object_ptr theCenter,
635                                        GEOM::GEOM_Object_ptr thePnt1,
636                                        GEOM::GEOM_Object_ptr thePnt2,
637                                        CORBA::Boolean theSense);
638   GEOM::GEOM_Object_ptr MakeArcOfEllipse (GEOM::GEOM_Object_ptr thePnt1,
639                                           GEOM::GEOM_Object_ptr thePnt2,
640                                           GEOM::GEOM_Object_ptr thePnt3);
641   GEOM::GEOM_Object_ptr MakePolyline (GEOM::GEOM_List_ptr thePoints,
642                                       CORBA::Boolean      theIsClosed);
643   GEOM::GEOM_Object_ptr MakeSplineBezier (GEOM::GEOM_List_ptr thePoints,
644                                           CORBA::Boolean      theIsClosed);
645   GEOM::GEOM_Object_ptr MakeSplineInterpolation (GEOM::GEOM_List_ptr thePoints,
646                                                  CORBA::Boolean      theIsClosed,
647                                                  CORBA::Boolean      theDoReordering);
648   GEOM::GEOM_Object_ptr MakeSketcher (const char* theCommand,
649                                                 GEOM::GEOM_List_ptr theWorkingPlane);
650   GEOM::GEOM_Object_ptr Make3DSketcher (GEOM::GEOM_List_ptr theCoordinates);
651
652   //-----------------------------------------------------------//
653   // LocalOperations                                           //
654   //-----------------------------------------------------------//
655   GEOM::GEOM_Object_ptr MakeFilletAll (GEOM::GEOM_Object_ptr theShape,
656                                        CORBA::Double theR);
657   GEOM::GEOM_Object_ptr MakeFilletEdges (GEOM::GEOM_Object_ptr theShape, CORBA::Double theR,
658                                          GEOM::GEOM_List_ptr theEdges);
659   GEOM::GEOM_Object_ptr MakeFilletEdgesR1R2 (GEOM::GEOM_Object_ptr theShape, CORBA::Double theR1,
660                                              CORBA::Double theR2, GEOM::GEOM_List_ptr theEdges);
661   GEOM::GEOM_Object_ptr MakeFilletFaces (GEOM::GEOM_Object_ptr theShape, CORBA::Double theR,
662                                          GEOM::GEOM_List_ptr theFaces);
663   GEOM::GEOM_Object_ptr MakeFilletFacesR1R2 (GEOM::GEOM_Object_ptr theShape, CORBA::Double theR1,
664                                              CORBA::Double theR2, GEOM::GEOM_List_ptr theFaces);
665   GEOM::GEOM_Object_ptr MakeFillet2D (GEOM::GEOM_Object_ptr theShape, CORBA::Double theR,
666                                       GEOM::GEOM_List_ptr theVertexes);
667   GEOM::GEOM_Object_ptr MakeFillet1D (GEOM::GEOM_Object_ptr theShape, CORBA::Double theR,
668                                       GEOM::GEOM_List_ptr theVertexes, CORBA::Boolean doIgnoreSecantVertices);
669   GEOM::GEOM_Object_ptr MakeChamferAll (GEOM::GEOM_Object_ptr theShape, CORBA::Double theD);
670   GEOM::GEOM_Object_ptr MakeChamferEdge (GEOM::GEOM_Object_ptr theShape,
671                                          CORBA::Double theD1, CORBA::Double theD2,
672                                          CORBA::Long theFace1, CORBA::Long theFace2);
673   GEOM::GEOM_Object_ptr MakeChamferEdgeAD (GEOM::GEOM_Object_ptr theShape,
674                                             CORBA::Double theD, CORBA::Double theAngle,
675                                            CORBA::Long theFace1, CORBA::Long theFace2);
676   GEOM::GEOM_Object_ptr MakeChamferFaces (GEOM::GEOM_Object_ptr theShape,
677                                           CORBA::Double theD1, CORBA::Double theD2,
678                                           GEOM::GEOM_List_ptr theFaces);
679   GEOM::GEOM_Object_ptr MakeChamferFacesAD (GEOM::GEOM_Object_ptr theShape,
680                                             CORBA::Double theD, CORBA::Double theAngle,
681                                             GEOM::GEOM_List_ptr theFaces);
682   GEOM::GEOM_Object_ptr MakeChamferEdges (GEOM::GEOM_Object_ptr theShape,
683                                           CORBA::Double theD1, CORBA::Double theD2,
684                                           GEOM::GEOM_List_ptr theEdges);
685   GEOM::GEOM_Object_ptr MakeChamferEdgesAD (GEOM::GEOM_Object_ptr theShape,
686                                             CORBA::Double theD, CORBA::Double theAngle,
687                                                GEOM::GEOM_List_ptr theEdges);
688   GEOM::GEOM_Object_ptr MakeArchimede (GEOM::GEOM_Object_ptr theShape,
689                                        CORBA::Double theWeight,
690                                        CORBA::Double theWaterDensity,
691                                        CORBA::Double theMeshingDeflection);
692   CORBA::Long GetSubShapeIndex (GEOM::GEOM_Object_ptr theShape,
693                                 GEOM::GEOM_Object_ptr theSubShape);
694
695   //-----------------------------------------------------------//
696   // GroupOperations                                           //
697   //-----------------------------------------------------------//
698   GEOM::GEOM_Object_ptr CreateGroup (GEOM::GEOM_Object_ptr theMainShape,
699                                      CORBA::Long theShapeType);
700   void AddObject (GEOM::GEOM_Object_ptr theGroup,
701                   CORBA::Long theSubShapeId);
702   void RemoveObject (GEOM::GEOM_Object_ptr theGroup,
703                      CORBA::Long theSubShapeId);
704   CORBA::Long GetType (GEOM::GEOM_Object_ptr theGroup);
705   GEOM::GEOM_Object_ptr GetMainShape (GEOM::GEOM_Object_ptr theGroup);
706   GEOM::GEOM_List_ptr GetObjects (GEOM::GEOM_Object_ptr theGroup);
707
708   //-----------------------------------------------------------//
709   // ImportExport Operations                                   //
710   //-----------------------------------------------------------//
711
712   void ExportSTL( GEOM::GEOM_Object_ptr theObject,
713                   const char*           theFileName,
714                   const bool            theIsASCII,
715                   CORBA::Double         theDeflection,
716                   const bool            theIsRelative );
717
718   GEOM::GEOM_Object_ptr ImportSTL( const char* theFileName );
719
720   void ExportBREP( GEOM::GEOM_Object_ptr theObject,
721                    const char*           theFileName );
722
723   GEOM::GEOM_Object_ptr ImportBREP( const char* theFileName );
724
725   void ExportSTEP( GEOM::GEOM_Object_ptr theObject,
726                    const char*           theFileName );
727
728   GEOM::GEOM_Object_ptr ImportSTEP( const char* theFileName,
729                                     const bool  theIsIgnoreUnits );
730
731   void ExportIGES( GEOM::GEOM_Object_ptr theObject,
732                    const char*           theFileName,
733                    const char*           theVersion );
734
735   GEOM::GEOM_Object_ptr ImportIGES( const char* theFileName,
736                                     const bool  theIsIgnoreUnits );
737
738   CORBA::Boolean ExportXAO( GEOM::GEOM_Object_ptr shape,
739                             const GEOM::ListOfGO& groups,
740                             const GEOM::ListOfFields& fields,
741                             const char* author,
742                             const char* fileName,
743                             const char* shapeFileName);
744   CORBA::Boolean ImportXAO( const char* fileName,
745                             GEOM::GEOM_Object_out shape,
746                             GEOM::ListOfGO_out subShapes,
747                             GEOM::ListOfGO_out groups,
748                             GEOM::ListOfFields_out fields );
749
750   void ExportVTK( GEOM::GEOM_Object_ptr theObject,
751                   const char*           theFileName,
752                   CORBA::Double         theDeflection );
753
754   //-----------------------------------------------------------//
755   // Advanced Operations                                       //
756   //-----------------------------------------------------------//
757   GEOM::GEOM_List_ptr MakePipeTShape (CORBA::Double theR1, CORBA::Double theW1, CORBA::Double theL1,
758                                       CORBA::Double theR2, CORBA::Double theW2, CORBA::Double theL2,
759                                       CORBA::Boolean theHexMesh);
760   GEOM::GEOM_List_ptr MakePipeTShapeWithPosition (CORBA::Double theR1, CORBA::Double theW1, CORBA::Double theL1,
761                                                   CORBA::Double theR2, CORBA::Double theW2, CORBA::Double theL2,
762                                                   CORBA::Boolean theHexMesh,
763                                                   GEOM::GEOM_Object_ptr theP1, GEOM::GEOM_Object_ptr theP2, GEOM::GEOM_Object_ptr theP3);
764   GEOM::GEOM_List_ptr MakePipeTShapeChamfer (CORBA::Double theR1, CORBA::Double theW1, CORBA::Double theL1,
765                                              CORBA::Double theR2, CORBA::Double theW2, CORBA::Double theL2,
766                                              CORBA::Double theH, CORBA::Double theW, CORBA::Boolean theHexMesh);
767   GEOM::GEOM_List_ptr MakePipeTShapeChamferWithPosition (CORBA::Double theR1, CORBA::Double theW1, CORBA::Double theL1,
768                                                          CORBA::Double theR2, CORBA::Double theW2, CORBA::Double theL2,
769                                                          CORBA::Double theH, CORBA::Double theW, CORBA::Boolean theHexMesh,
770                                                          GEOM::GEOM_Object_ptr theP1, GEOM::GEOM_Object_ptr theP2, GEOM::GEOM_Object_ptr theP3);
771   GEOM::GEOM_List_ptr MakePipeTShapeFillet (CORBA::Double theR1, CORBA::Double theW1, CORBA::Double theL1,
772                                             CORBA::Double theR2, CORBA::Double theW2, CORBA::Double theL2,
773                                             CORBA::Double theRF, CORBA::Boolean theHexMesh);
774   GEOM::GEOM_List_ptr MakePipeTShapeFilletWithPosition (CORBA::Double theR1, CORBA::Double theW1, CORBA::Double theL1,
775                                                         CORBA::Double theR2, CORBA::Double theW2, CORBA::Double theL2,
776                                                         CORBA::Double theRF, CORBA::Boolean theHexMesh,
777                                                         GEOM::GEOM_Object_ptr theP1, GEOM::GEOM_Object_ptr theP2, GEOM::GEOM_Object_ptr theP3);
778   GEOM::GEOM_Object_ptr MakeDividedDisk (CORBA::Double theR, CORBA::Double theRatio,
779                                          CORBA::Short theOrientation, GEOM::pattern thePattern);
780   GEOM::GEOM_Object_ptr MakeDividedCylinder (CORBA::Double theR, 
781                                              CORBA::Double theH,
782                                              GEOM::pattern thePattern);
783   GEOM::GEOM_Object_ptr MakeSmoothingSurface (GEOM::GEOM_List_ptr thelPoints);
784
785   //-----------------------------------------------------------//
786   // Measure Operations                                        //
787   //-----------------------------------------------------------//
788   GEOM::GEOM_List_ptr PatchFace(GEOM::GEOM_Object_ptr theShape);
789   /*@@ insert new functions before this line @@ do not remove this line @@*/
790
791 protected:
792   SALOME_NamingService_Abstract *  name_service = nullptr;
793 private:
794   GEOM::GEOM_Gen_var      myGeomEngine;
795   PortableServer::POA_var myPOA;
796
797   GEOM::GEOM_IBasicOperations_var     myBasicOp;
798   GEOM::GEOM_I3DPrimOperations_var    my3DPrimOp;
799   GEOM::GEOM_IBooleanOperations_var   myBoolOp;
800   GEOM::GEOM_IInsertOperations_var    myInsOp;
801   GEOM::GEOM_ITransformOperations_var myTransfOp;
802   GEOM::GEOM_IShapesOperations_var    myShapesOp;
803   GEOM::GEOM_IBlocksOperations_var    myBlocksOp;
804   GEOM::GEOM_ICurvesOperations_var    myCurvesOp;
805   GEOM::GEOM_ILocalOperations_var     myLocalOp;
806   GEOM::GEOM_IMeasureOperations_var   myMeasureOp;
807   GEOM::GEOM_IGroupOperations_var     myGroupOp;
808   GEOM::IAdvancedOperations_var       myAdvancedOp;
809   GEOM::ISTLOperations_var            mySTLOp;
810   GEOM::IBREPOperations_var           myBREPOp;
811   GEOM::ISTEPOperations_var           mySTEPOp;
812   GEOM::IIGESOperations_var           myIGESOp;
813   GEOM::IXAOOperations_var            myXAOOp;
814 #ifdef WITH_VTK
815   GEOM::IVTKOperations_var            myVTKOp;
816 #endif
817 };
818
819 class GEOM_I_SUPERV_EXPORT GEOM_Superv_i_With_Session : public GEOM_Superv_i
820 {
821 public:
822   GEOM_Superv_i_With_Session(CORBA::ORB_ptr orb,
823                 PortableServer::POA_ptr poa,
824                 PortableServer::ObjectId * contId,
825                 const char *instanceName,
826                 const char *interfaceName);
827 };
828
829 class GEOM_I_SUPERV_EXPORT GEOM_Superv_i_Without_Session : public GEOM_Superv_i
830 {
831 public:
832   GEOM_Superv_i_Without_Session(CORBA::ORB_ptr orb,
833                 PortableServer::POA_ptr poa,
834                 PortableServer::ObjectId * contId,
835                 const char *instanceName,
836                 const char *interfaceName,
837                 SALOME_NamingService_Abstract *my_name_service);
838 };
839
840 #endif