Salome HOME
0020432: EDF 1029 GEOM : Fillet 1D
[modules/geom.git] / src / GEOM_I_Superv / GEOM_Superv_i.hh
index 1072758a7720bf1729221e5030445231a5a75432..4ac9969b6e1c5c82f0e83cf817e6511668fac716 100644 (file)
@@ -1,3 +1,24 @@
+//  Copyright (C) 2007-2008  CEA/DEN, EDF R&D, OPEN CASCADE
+//
+//  Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
+//
+//  This library is free software; you can redistribute it and/or
+//  modify it under the terms of the GNU Lesser General Public
+//  License as published by the Free Software Foundation; either
+//  version 2.1 of the License.
+//
+//  This library is distributed in the hope that it will be useful,
+//  but WITHOUT ANY WARRANTY; without even the implied warranty of
+//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+//  Lesser General Public License for more details.
+//
+//  You should have received a copy of the GNU Lesser General Public
+//  License along with this library; if not, write to the Free Software
+//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
+//
+//  See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+//
 #ifndef __GEOM_SUPERV_I_H__
 #define __GEOM_SUPERV_I_H__
 
@@ -47,21 +68,21 @@ public:
   //-----------------------------------------------------------//
   GEOM::GEOM_List_ptr CreateListOfGO();
   void AddItemToListOfGO(GEOM::GEOM_List_ptr& theList, 
-                        GEOM::GEOM_Object_ptr    theObject);
+                        GEOM::GEOM_Object_ptr theObject);
 
   //-----------------------------------------------------------//
   // Create ListOfLong and add items to it                     // 
   //-----------------------------------------------------------//
   GEOM::GEOM_List_ptr CreateListOfLong();
   void AddItemToListOfLong(GEOM::GEOM_List_ptr& theList, 
-                          long    theObject);
+                          CORBA::Long theObject);
   
   //-----------------------------------------------------------//
   // Create ListOfDouble and add items to it                   // 
   //-----------------------------------------------------------//
   GEOM::GEOM_List_ptr CreateListOfDouble();
   void AddItemToListOfDouble(GEOM::GEOM_List_ptr& theList, 
-                            double    theObject);
+                            CORBA::Double theObject);
 
   //-----------------------------------------------------------------------//
   // Inherited methods from SALOMEDS::Driver                               //
@@ -69,21 +90,21 @@ public:
 
   SALOMEDS::TMPFile* Save(SALOMEDS::SComponent_ptr theComponent,
                          const char* theURL,
-                         bool isMultiFile);
+                         CORBA::Boolean isMultiFile);
 
   SALOMEDS::TMPFile* SaveASCII(SALOMEDS::SComponent_ptr theComponent,
                               const char* theURL,
-                              bool isMultiFile);
+                              CORBA::Boolean isMultiFile);
   
   CORBA::Boolean Load(SALOMEDS::SComponent_ptr theComponent,
                      const SALOMEDS::TMPFile& theStream,
                      const char* theURL,
-                     bool isMultiFile);
+                     CORBA::Boolean isMultiFile);
 
   CORBA::Boolean LoadASCII(SALOMEDS::SComponent_ptr theComponent,
                           const SALOMEDS::TMPFile& theStream,
                           const char* theURL,
-                          bool isMultiFile);
+                          CORBA::Boolean isMultiFile);
 
   void Close(SALOMEDS::SComponent_ptr theComponent);
   char* ComponentDataType();
@@ -98,12 +119,16 @@ public:
                               CORBA::Boolean isMultiFile,
                               CORBA::Boolean isASCII);
 
-  bool CanPublishInStudy(CORBA::Object_ptr theIOR);
+  CORBA::Boolean CanPublishInStudy(CORBA::Object_ptr theIOR);
   SALOMEDS::SObject_ptr PublishInStudy(SALOMEDS::Study_ptr theStudy,
                                       SALOMEDS::SObject_ptr theSObject,
                                       CORBA::Object_ptr theObject,
                                       const char* theName) throw (SALOME::SALOME_Exception) ;
 
+  GEOM::ListOfGO* PublishNamedShapesInStudy(SALOMEDS::Study_ptr theStudy,
+                                           //SALOMEDS::SObject_ptr theSObject,
+                                           CORBA::Object_ptr theObject);
+
   CORBA::Boolean CanCopy(SALOMEDS::SObject_ptr theObject);
   SALOMEDS::TMPFile* CopyFrom(SALOMEDS::SObject_ptr theObject, CORBA::Long& theObjectID);
   CORBA::Boolean CanPaste(const char* theComponentName, CORBA::Long theObjectID);
@@ -123,6 +148,10 @@ public:
                                                CORBA::Double theZ);
   GEOM::GEOM_Object_ptr MakePointOnCurve (GEOM::GEOM_Object_ptr theRefCurve,
                                          CORBA::Double theParameter);
+  GEOM::GEOM_Object_ptr MakePointOnLinesIntersection (GEOM::GEOM_Object_ptr theRefLine1,
+                                                     GEOM::GEOM_Object_ptr theRefLine2);
+  GEOM::GEOM_Object_ptr MakeTangentOnCurve (GEOM::GEOM_Object_ptr theRefCurve,
+                                            CORBA::Double theParameter);
   GEOM::GEOM_Object_ptr MakeVectorDXDYDZ (CORBA::Double theDX,
                                          CORBA::Double theDY,
                                          CORBA::Double theDZ);
@@ -130,6 +159,8 @@ public:
                                          GEOM::GEOM_Object_ptr thePnt2);
   GEOM::GEOM_Object_ptr MakeLineTwoPnt (GEOM::GEOM_Object_ptr thePnt1,
                                        GEOM::GEOM_Object_ptr thePnt2);
+  GEOM::GEOM_Object_ptr MakeLineTwoFaces (GEOM::GEOM_Object_ptr theFace1,
+                                         GEOM::GEOM_Object_ptr theFace2);
   GEOM::GEOM_Object_ptr MakePlaneThreePnt (GEOM::GEOM_Object_ptr thePnt1,
                                           GEOM::GEOM_Object_ptr thePnt2,
                                           GEOM::GEOM_Object_ptr thePnt3,
@@ -139,10 +170,21 @@ public:
                                         CORBA::Double theTrimSize);
   GEOM::GEOM_Object_ptr MakePlaneFace (GEOM::GEOM_Object_ptr theFace,
                                       CORBA::Double theTrimSize);
+  GEOM::GEOM_Object_ptr MakePlane2Vec (GEOM::GEOM_Object_ptr theVec1,
+                                      GEOM::GEOM_Object_ptr theVec2,
+                                      CORBA::Double theTrimSize);
+  GEOM::GEOM_Object_ptr MakePlaneLCS (GEOM::GEOM_Object_ptr theLCS,
+                                     CORBA::Double theTrimSize,
+                                     CORBA::Double theOrientation);
   GEOM::GEOM_Object_ptr MakeMarker (CORBA::Double theOX , CORBA::Double theOY , CORBA::Double theOZ,
                                    CORBA::Double theXDX, CORBA::Double theXDY, CORBA::Double theXDZ,
                                    CORBA::Double theYDX, CORBA::Double theYDY, CORBA::Double theYDZ);
 
+  GEOM::GEOM_Object_ptr MakeTangentPlaneOnFace (GEOM::GEOM_Object_ptr theFace, 
+                                                CORBA::Double theParameterU,
+                                                CORBA::Double theParameterV,
+                                                CORBA::Double theTrimSize);
+
   //-----------------------------------------------------------//
   // Primitives Construction : 3DPrimOperations                //
   //-----------------------------------------------------------//
@@ -157,6 +199,20 @@ public:
                                       CORBA::Double theDZ);
   GEOM::GEOM_Object_ptr MakeBoxTwoPnt (GEOM::GEOM_Object_ptr thePnt1, 
                                       GEOM::GEOM_Object_ptr thePnt2);
+  GEOM::GEOM_Object_ptr MakeFaceHW (CORBA::Double theH,
+                                   CORBA::Double theW,
+                                   CORBA::Short  theOrientation);
+  GEOM::GEOM_Object_ptr MakeFaceObjHW (GEOM::GEOM_Object_ptr theObj, 
+                                      CORBA::Double theH,
+                                      CORBA::Double theW);
+  GEOM::GEOM_Object_ptr MakeDiskPntVecR (GEOM::GEOM_Object_ptr theCenter,
+                                        GEOM::GEOM_Object_ptr theVector,
+                                        CORBA::Double theR);
+  GEOM::GEOM_Object_ptr MakeDiskThreePnt (GEOM::GEOM_Object_ptr thePnt1,
+                                         GEOM::GEOM_Object_ptr thePnt2,
+                                         GEOM::GEOM_Object_ptr thePnt3);
+  GEOM::GEOM_Object_ptr MakeDiskR (CORBA::Double theR,
+                                  CORBA::Short  theOrientation);
   GEOM::GEOM_Object_ptr MakeCylinderPntVecRH (GEOM::GEOM_Object_ptr thePnt,
                                              GEOM::GEOM_Object_ptr theAxis,
                                              CORBA::Double theRadius,
@@ -187,19 +243,61 @@ public:
   GEOM::GEOM_Object_ptr MakePrismVecH (GEOM::GEOM_Object_ptr theBase,
                                       GEOM::GEOM_Object_ptr theVec,
                                       CORBA::Double         theH);
+  GEOM::GEOM_Object_ptr MakePrismVecH2Ways (GEOM::GEOM_Object_ptr theBase,
+                                           GEOM::GEOM_Object_ptr theVec,
+                                           CORBA::Double         theH);
   GEOM::GEOM_Object_ptr MakePrismTwoPnt (GEOM::GEOM_Object_ptr theBase,
                                         GEOM::GEOM_Object_ptr thePoint1,
                                         GEOM::GEOM_Object_ptr thePoint2);
+  GEOM::GEOM_Object_ptr MakePrismTwoPnt2Ways (GEOM::GEOM_Object_ptr theBase,
+                                             GEOM::GEOM_Object_ptr thePoint1,
+                                             GEOM::GEOM_Object_ptr thePoint2);
+  GEOM::GEOM_Object_ptr MakePrismDXDYDZ (GEOM::GEOM_Object_ptr theBase,
+                                        CORBA::Double         theDX,
+                                        CORBA::Double         theDY,
+                                        CORBA::Double         theDZ);
+  GEOM::GEOM_Object_ptr MakePrismDXDYDZ2Ways (GEOM::GEOM_Object_ptr theBase,
+                                             CORBA::Double         theDX,
+                                             CORBA::Double         theDY,
+                                             CORBA::Double         theDZ);
   GEOM::GEOM_Object_ptr MakePipe (GEOM::GEOM_Object_ptr theBase, 
                                  GEOM::GEOM_Object_ptr thePath);
   GEOM::GEOM_Object_ptr MakeRevolutionAxisAngle (GEOM::GEOM_Object_ptr theBase,
                                                 GEOM::GEOM_Object_ptr theAxis,
                                                 CORBA::Double theAngle);
+  GEOM::GEOM_Object_ptr MakeRevolutionAxisAngle2Ways (GEOM::GEOM_Object_ptr theBase,
+                                                     GEOM::GEOM_Object_ptr theAxis,
+                                                     CORBA::Double theAngle);
   GEOM::GEOM_Object_ptr MakeFilling (GEOM::GEOM_Object_ptr theShape,
                                     CORBA::Long theMinDeg, CORBA::Long theMaxDeg,
                                     CORBA::Double theTol2D, CORBA::Double theTol3D,
-                                    CORBA::Long theNbIter);
+                                    CORBA::Long theNbIter, CORBA::Boolean theApprox);
+
+  GEOM::GEOM_Object_ptr MakeThruSections(const GEOM::ListOfGO& theSeqSections,
+                                        CORBA::Boolean theModeSolid,
+                                        CORBA::Double thePreci,
+                                        CORBA::Boolean theRuled);
+  
+  GEOM::GEOM_Object_ptr MakePipeWithDifferentSections(const GEOM::ListOfGO& theBases,
+                                                     const GEOM::ListOfGO& theLocations,
+                                                     GEOM::GEOM_Object_ptr thePath,
+                                                     CORBA::Boolean theWithContact,
+                                                     CORBA::Boolean theWithCorrections);
+  
+  GEOM::GEOM_Object_ptr MakePipeWithShellSections(const GEOM::ListOfGO& theBases,
+                                                 const GEOM::ListOfGO& theSubBases,
+                                                 const GEOM::ListOfGO& theLocations,
+                                                 GEOM::GEOM_Object_ptr thePath,
+                                                 CORBA::Boolean theWithContact,
+                                                 CORBA::Boolean theWithCorrections);
+
+  GEOM::GEOM_Object_ptr MakePipeShellsWithoutPath(const GEOM::ListOfGO& theBases,
+                                                 const GEOM::ListOfGO& theLocations);
   
+  GEOM::GEOM_Object_ptr MakePipeBiNormalAlongVector (GEOM::GEOM_Object_ptr theBase,
+                                                    GEOM::GEOM_Object_ptr thePath,
+                                                    GEOM::GEOM_Object_ptr theVec);
+
   //-----------------------------------------------------------//
   // BooleanOperations                                         //
   //-----------------------------------------------------------//
@@ -214,7 +312,8 @@ public:
                                       GEOM::GEOM_List_ptr   theRemoveInside,
                                       CORBA::Short      theLimit,
                                       CORBA::Boolean    theRemoveWebs,
-                                      GEOM::GEOM_List_ptr theMaterials);
+                                      GEOM::GEOM_List_ptr theMaterials,
+                                      CORBA::Short theKeepNonlimitShapes);
   GEOM::GEOM_Object_ptr MakeHalfPartition (GEOM::GEOM_Object_ptr theShape,
                                           GEOM::GEOM_Object_ptr thePlane);
 
@@ -253,6 +352,10 @@ public:
                                         GEOM::GEOM_Object_ptr theVector);
   GEOM::GEOM_Object_ptr TranslateVectorCopy (GEOM::GEOM_Object_ptr theObject,
                                             GEOM::GEOM_Object_ptr theVector);
+  GEOM::GEOM_Object_ptr TranslateVectorDistance (GEOM::GEOM_Object_ptr theObject,
+                                                GEOM::GEOM_Object_ptr theVector,
+                                                CORBA::Double theDistance,
+                                                CORBA::Boolean theCopy);
   GEOM::GEOM_Object_ptr MultiTranslate1D (GEOM::GEOM_Object_ptr theObject,
                                          GEOM::GEOM_Object_ptr theVector,
                                          CORBA::Double theStep,
@@ -270,6 +373,17 @@ public:
   GEOM::GEOM_Object_ptr RotateCopy (GEOM::GEOM_Object_ptr theObject,
                                    GEOM::GEOM_Object_ptr theAxis,
                                    CORBA::Double theAngle);
+
+  GEOM::GEOM_Object_ptr RotateThreePoints (GEOM::GEOM_Object_ptr theObject,
+                                          GEOM::GEOM_Object_ptr theCentPoint,
+                                          GEOM::GEOM_Object_ptr thePoint1,
+                                          GEOM::GEOM_Object_ptr thePoint2);
+
+  GEOM::GEOM_Object_ptr RotateThreePointsCopy (GEOM::GEOM_Object_ptr theObject,
+                                              GEOM::GEOM_Object_ptr theCentPoint,
+                                              GEOM::GEOM_Object_ptr thePoint1,
+                                              GEOM::GEOM_Object_ptr thePoint2);
+
   GEOM::GEOM_Object_ptr MultiRotate1D (GEOM::GEOM_Object_ptr theObject,
                                       GEOM::GEOM_Object_ptr theAxis,
                                       CORBA::Long theNbTimes);
@@ -301,19 +415,35 @@ public:
   GEOM::GEOM_Object_ptr ScaleShapeCopy (GEOM::GEOM_Object_ptr theObject, 
                                        GEOM::GEOM_Object_ptr thePoint,
                                        CORBA::Double theFactor);
+  GEOM::GEOM_Object_ptr ScaleShapeAlongAxes (GEOM::GEOM_Object_ptr theObject,
+                                            GEOM::GEOM_Object_ptr thePoint,
+                                            CORBA::Double theFactorX,
+                                            CORBA::Double theFactorY,
+                                            CORBA::Double theFactorZ);
+  GEOM::GEOM_Object_ptr ScaleShapeAlongAxesCopy (GEOM::GEOM_Object_ptr theObject,
+                                                GEOM::GEOM_Object_ptr thePoint,
+                                                CORBA::Double theFactorX,
+                                                CORBA::Double theFactorY,
+                                                CORBA::Double theFactorZ);
   GEOM::GEOM_Object_ptr PositionShape (GEOM::GEOM_Object_ptr theObject,
                                       GEOM::GEOM_Object_ptr theStartLCS,
                                       GEOM::GEOM_Object_ptr theEndLCS);
   GEOM::GEOM_Object_ptr PositionShapeCopy (GEOM::GEOM_Object_ptr theObject,
                                           GEOM::GEOM_Object_ptr theStartLCS,
                                           GEOM::GEOM_Object_ptr theEndLCS);
+  GEOM::GEOM_Object_ptr PositionAlongPath (GEOM::GEOM_Object_ptr theObject,
+                                          GEOM::GEOM_Object_ptr thePath,
+                                          CORBA::Double         theDistance,
+                                          CORBA::Boolean        theCopy,
+                                          CORBA::Boolean        theReverse);
 
   //-----------------------------------------------------------//
   // ShapesOperations                                          //
   //-----------------------------------------------------------//
   GEOM::GEOM_Object_ptr MakeEdge (GEOM::GEOM_Object_ptr thePnt1,
                                  GEOM::GEOM_Object_ptr thePnt2);
-  GEOM::GEOM_Object_ptr MakeWire (GEOM::GEOM_List_ptr theEdgesAndWires);
+  GEOM::GEOM_Object_ptr MakeWire (GEOM::GEOM_List_ptr theEdgesAndWires,
+                                  CORBA::Double       theTolerance);
   GEOM::GEOM_Object_ptr MakeFace (GEOM::GEOM_Object_ptr theWire,
                                  CORBA::Boolean isPlanarWanted);
   GEOM::GEOM_Object_ptr MakeFaceWires (GEOM::GEOM_List_ptr theWires,
@@ -323,7 +453,14 @@ public:
   GEOM::GEOM_Object_ptr MakeSolidShells (GEOM::GEOM_List_ptr theShells);
   GEOM::GEOM_Object_ptr MakeCompound (GEOM::GEOM_List_ptr theShapes);
   GEOM::GEOM_Object_ptr MakeGlueFaces (GEOM::GEOM_Object_ptr theShape,
-                                               CORBA::Double   theTolerance);
+                                      CORBA::Double theTolerance,
+                                      CORBA::Boolean doKeepNonSolids);
+  GEOM::GEOM_List_ptr GetGlueFaces (GEOM::GEOM_Object_ptr theShape,
+                                   CORBA::Double theTolerance);
+  GEOM::GEOM_Object_ptr MakeGlueFacesByList (GEOM::GEOM_Object_ptr theShape,
+                                            CORBA::Double theTolerance,
+                                            const GEOM::ListOfGO& theFaces,
+                                            CORBA::Boolean doKeepNonSolids);
   GEOM::GEOM_List_ptr MakeExplode (GEOM::GEOM_Object_ptr theShape,
                                       CORBA::Long theShapeType,
                                       CORBA::Boolean isSorted);
@@ -331,6 +468,17 @@ public:
   CORBA::Long NumberOfEdges (GEOM::GEOM_Object_ptr theShape);
   GEOM::GEOM_Object_ptr ChangeOrientation (GEOM::GEOM_Object_ptr theShape);
 
+  GEOM::GEOM_List_ptr GetShapesOnShape (GEOM::GEOM_Object_ptr theCheckShape,
+                                       GEOM::GEOM_Object_ptr theShape,
+                                       CORBA::Short theShapeType,
+                                       GEOM::shape_state theState);
+  GEOM::GEOM_Object_ptr GetShapesOnShapeAsCompound
+                                       (GEOM::GEOM_Object_ptr theCheckShape,
+                                       GEOM::GEOM_Object_ptr theShape,
+                                       CORBA::Short theShapeType,
+                                       GEOM::shape_state theState);
+
+
   //-----------------------------------------------------------//
   // BlocksOperations                                          //
   //-----------------------------------------------------------//
@@ -414,17 +562,32 @@ public:
   GEOM::GEOM_Object_ptr MakeCircleThreePnt (GEOM::GEOM_Object_ptr thePnt1,
                                            GEOM::GEOM_Object_ptr thePnt2,
                                            GEOM::GEOM_Object_ptr thePnt3);
+  GEOM::GEOM_Object_ptr MakeCircleCenter2Pnt (GEOM::GEOM_Object_ptr thePnt1,
+                                             GEOM::GEOM_Object_ptr thePnt2,
+                                             GEOM::GEOM_Object_ptr thePnt3);
   GEOM::GEOM_Object_ptr MakeEllipse (GEOM::GEOM_Object_ptr theCenter,
                                     GEOM::GEOM_Object_ptr theVector,
                                     CORBA::Double theRMajor, CORBA::Double theRMinor);
+  GEOM::GEOM_Object_ptr MakeEllipseVec (GEOM::GEOM_Object_ptr theCenter,
+                                       GEOM::GEOM_Object_ptr theVector,
+                                       CORBA::Double theRMajor, CORBA::Double theRMinor,
+                                       GEOM::GEOM_Object_ptr theVectorMajor);
   GEOM::GEOM_Object_ptr MakeArc (GEOM::GEOM_Object_ptr thePnt1,
                                 GEOM::GEOM_Object_ptr thePnt2,
                                 GEOM::GEOM_Object_ptr thePnt3);
+  GEOM::GEOM_Object_ptr MakeArcCenter (GEOM::GEOM_Object_ptr theCenter,
+                                       GEOM::GEOM_Object_ptr thePnt1,
+                                       GEOM::GEOM_Object_ptr thePnt2,
+                                       CORBA::Boolean theSense);
+  GEOM::GEOM_Object_ptr MakeArcOfEllipse (GEOM::GEOM_Object_ptr thePnt1,
+                                         GEOM::GEOM_Object_ptr thePnt2,
+                                         GEOM::GEOM_Object_ptr thePnt3);
   GEOM::GEOM_Object_ptr MakePolyline (GEOM::GEOM_List_ptr thePoints);
   GEOM::GEOM_Object_ptr MakeSplineBezier (GEOM::GEOM_List_ptr thePoints);
   GEOM::GEOM_Object_ptr MakeSplineInterpolation (GEOM::GEOM_List_ptr thePoints);
   GEOM::GEOM_Object_ptr MakeSketcher (const char* theCommand, 
                                                GEOM::GEOM_List_ptr theWorkingPlane);
+  GEOM::GEOM_Object_ptr Make3DSketcher (GEOM::GEOM_List_ptr theCoordinates);
 
   //-----------------------------------------------------------//
   // LocalOperations                                           //
@@ -433,15 +596,35 @@ public:
                                       CORBA::Double theR);
   GEOM::GEOM_Object_ptr MakeFilletEdges (GEOM::GEOM_Object_ptr theShape, CORBA::Double theR,
                                         GEOM::GEOM_List_ptr theEdges);
+  GEOM::GEOM_Object_ptr MakeFilletEdgesR1R2 (GEOM::GEOM_Object_ptr theShape, CORBA::Double theR1,
+                                            CORBA::Double theR2, GEOM::GEOM_List_ptr theEdges);
   GEOM::GEOM_Object_ptr MakeFilletFaces (GEOM::GEOM_Object_ptr theShape, CORBA::Double theR,
                                         GEOM::GEOM_List_ptr theFaces);
+  GEOM::GEOM_Object_ptr MakeFilletFacesR1R2 (GEOM::GEOM_Object_ptr theShape, CORBA::Double theR1,
+                                            CORBA::Double theR2, GEOM::GEOM_List_ptr theFaces);
+  GEOM::GEOM_Object_ptr MakeFillet2D (GEOM::GEOM_Object_ptr theShape, CORBA::Double theR,
+                                     GEOM::GEOM_List_ptr theVertexes);
+  GEOM::GEOM_Object_ptr MakeFillet1D (GEOM::GEOM_Object_ptr theShape, CORBA::Double theR,
+                                     GEOM::GEOM_List_ptr theVertexes);
   GEOM::GEOM_Object_ptr MakeChamferAll (GEOM::GEOM_Object_ptr theShape, CORBA::Double theD);
   GEOM::GEOM_Object_ptr MakeChamferEdge (GEOM::GEOM_Object_ptr theShape,
                                         CORBA::Double theD1, CORBA::Double theD2,
                                         CORBA::Long theFace1, CORBA::Long theFace2);
+  GEOM::GEOM_Object_ptr MakeChamferEdgeAD (GEOM::GEOM_Object_ptr theShape,
+                                          CORBA::Double theD, CORBA::Double theAngle,
+                                          CORBA::Long theFace1, CORBA::Long theFace2);
   GEOM::GEOM_Object_ptr MakeChamferFaces (GEOM::GEOM_Object_ptr theShape,
                                          CORBA::Double theD1, CORBA::Double theD2,
                                          GEOM::GEOM_List_ptr theFaces);
+  GEOM::GEOM_Object_ptr MakeChamferFacesAD (GEOM::GEOM_Object_ptr theShape,
+                                           CORBA::Double theD, CORBA::Double theAngle,
+                                           GEOM::GEOM_List_ptr theFaces);
+  GEOM::GEOM_Object_ptr MakeChamferEdges (GEOM::GEOM_Object_ptr theShape,
+                                         CORBA::Double theD1, CORBA::Double theD2,
+                                         GEOM::GEOM_List_ptr theEdges);
+  GEOM::GEOM_Object_ptr MakeChamferEdgesAD (GEOM::GEOM_Object_ptr theShape,
+                                           CORBA::Double theD, CORBA::Double theAngle,
+                                           GEOM::GEOM_List_ptr theEdges);
   GEOM::GEOM_Object_ptr MakeArchimede (GEOM::GEOM_Object_ptr theShape,
                                        CORBA::Double theWeight,
                                       CORBA::Double theWaterDensity,
@@ -464,20 +647,21 @@ public:
   
 private:
   SALOME_NamingService *  name_service; 
-  GEOM::GEOM_Gen_ptr      myGeomEngine;
+  GEOM::GEOM_Gen_var      myGeomEngine;
   CORBA::Long             myStudyID;
+  CORBA::Long             myLastStudyID; // mkr : PAL10770
   PortableServer::POA_var myPOA;
   
-  GEOM::GEOM_IBasicOperations_ptr     myBasicOp;
-  GEOM::GEOM_I3DPrimOperations_ptr    my3DPrimOp;
-  GEOM::GEOM_IBooleanOperations_ptr   myBoolOp;
-  GEOM::GEOM_IInsertOperations_ptr    myInsOp;
-  GEOM::GEOM_ITransformOperations_ptr myTransfOp;
-  GEOM::GEOM_IShapesOperations_ptr    myShapesOp;
-  GEOM::GEOM_IBlocksOperations_ptr    myBlocksOp;
-  GEOM::GEOM_ICurvesOperations_ptr    myCurvesOp;
-  GEOM::GEOM_ILocalOperations_ptr     myLocalOp;
-  GEOM::GEOM_IGroupOperations_ptr     myGroupOp;
+  GEOM::GEOM_IBasicOperations_var     myBasicOp;
+  GEOM::GEOM_I3DPrimOperations_var    my3DPrimOp;
+  GEOM::GEOM_IBooleanOperations_var   myBoolOp;
+  GEOM::GEOM_IInsertOperations_var    myInsOp;
+  GEOM::GEOM_ITransformOperations_var myTransfOp;
+  GEOM::GEOM_IShapesOperations_var    myShapesOp;
+  GEOM::GEOM_IBlocksOperations_var    myBlocksOp;
+  GEOM::GEOM_ICurvesOperations_var    myCurvesOp;
+  GEOM::GEOM_ILocalOperations_var     myLocalOp;
+  GEOM::GEOM_IGroupOperations_var     myGroupOp;
 
 };