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