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