Salome HOME
0016757: EDF 546 GEOM : Add Face and Disc in geom primitives
[modules/geom.git] / src / GEOM_I_Superv / GEOM_Superv_i.cc
index 6d289ff684e0f5f9dae0322148ca218f629b9443..3a37d31026946348592a9ab6ec89bea1aeb2cb11 100644 (file)
@@ -70,6 +70,12 @@ GEOM_Superv_i::GEOM_Superv_i(CORBA::ORB_ptr orb,
 GEOM_Superv_i::~GEOM_Superv_i()
 {
   MESSAGE("GEOM_Superv_i::~GEOM_Superv_i");
+  if (!CORBA::is_nil(myBasicOp))
+    myBasicOp->Destroy();
+  if (!CORBA::is_nil(myBoolOp))
+    myBoolOp->Destroy();
+  if (!CORBA::is_nil(my3DPrimOp))
+    my3DPrimOp->Destroy();
   delete name_service;
 }
 
@@ -79,8 +85,8 @@ GEOM_Superv_i::~GEOM_Superv_i()
 //============================================================================
 void GEOM_Superv_i::register_name(char * name)
 {
-  GEOM::GEOM_Superv_ptr g = GEOM::GEOM_Superv::_narrow(POA_GEOM::GEOM_Superv::_this());
-  name_service->Register(g, strdup(name)); 
+  GEOM::GEOM_Superv_var g = _this();
+  name_service->Register(g, name); 
 }
 
 //=============================================================================
@@ -88,9 +94,17 @@ void GEOM_Superv_i::register_name(char * name)
 //=============================================================================
 void GEOM_Superv_i::setGeomEngine()
 {
+  if ( !CORBA::is_nil(myGeomEngine) ) 
+    return;
+
   // get GEOM_Gen engine
+  Engines::Container_var cont=GetContainerRef();
+  CORBA::String_var container_name=cont->name();
+  std::string shortName=container_name.in();
+  shortName=shortName.substr(12); // substract "/Containers/"
   SALOME_LifeCycleCORBA* lcc = new SALOME_LifeCycleCORBA( name_service );
-  Engines::Component_var comp = lcc->FindOrLoad_Component( "FactoryServer", "GEOM" );
+  Engines::Component_var comp = lcc->FindOrLoad_Component( shortName.c_str(), "GEOM" );
+  delete lcc;
 
   myGeomEngine = GEOM::GEOM_Gen::_narrow(comp);
 }
@@ -545,6 +559,20 @@ GEOM::GEOM_Object_ptr GEOM_Superv_i::MakePointOnCurve (GEOM::GEOM_Object_ptr the
   return anObj;
 }
 
+//=============================================================================
+//  MakePointOnLinesIntersection:
+//=============================================================================
+GEOM::GEOM_Object_ptr GEOM_Superv_i::MakePointOnLinesIntersection (GEOM::GEOM_Object_ptr theRefLine1,
+                                                                  GEOM::GEOM_Object_ptr theRefLine2)
+{
+  beginService( " GEOM_Superv_i::MakePointOnLinesIntersection" );
+  MESSAGE("GEOM_Superv_i::MakePointOnLinesIntersection");
+  getBasicOp();
+  GEOM::GEOM_Object_ptr anObj = myBasicOp->MakePointOnLinesIntersection(theRefLine1, theRefLine2);
+  endService( " GEOM_Superv_i::MakePointOnLinesIntersection" );
+  return anObj;
+}
+
 //=============================================================================
 //  MakeTangentOnCurve:
 //=============================================================================
@@ -602,6 +630,20 @@ GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeLineTwoPnt (GEOM::GEOM_Object_ptr thePn
   return anObj;
 }
 
+//=============================================================================
+//  MakeLineTwoFaces:
+//=============================================================================
+GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeLineTwoFaces (GEOM::GEOM_Object_ptr theFace1,
+                                                      GEOM::GEOM_Object_ptr theFace2)
+{
+  beginService( " GEOM_Superv_i::MakeLineTwoFaces");
+  MESSAGE("GEOM_Superv_i::MakeLineTwoFaces");
+  getBasicOp();
+  GEOM::GEOM_Object_ptr anObj = myBasicOp->MakeLineTwoFaces(theFace1, theFace2);
+  endService( " GEOM_Superv_i::MakeLineTwoFaces");
+  return anObj;
+}
+
 //=============================================================================
 //  MakePlaneThreePnt:
 //=============================================================================
@@ -729,6 +771,65 @@ GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeBoxTwoPnt (GEOM::GEOM_Object_ptr thePnt
   return anObj;
 }
 
+//=============================================================================
+//  MakeFaceHW:
+//=============================================================================
+GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeFaceHW (CORBA::Double theH,
+                                                CORBA::Double theW)
+{
+  beginService( " GEOM_Superv_i::MakeFaceHW" );
+  MESSAGE("GEOM_Superv_i::MakeFaceHW");
+  get3DPrimOp();
+  GEOM::GEOM_Object_ptr anObj = my3DPrimOp->MakeFaceHW(theH, theW);
+  endService( " GEOM_Superv_i::MakeFaceHW" );
+  return anObj;
+}
+
+//=============================================================================
+//  MakeFaceTwoPlaneHW:
+//=============================================================================
+GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeFacePlaneHW (GEOM::GEOM_Object_ptr theFace, 
+                                                     CORBA::Double theH,
+                                                     CORBA::Double theW)
+{
+  beginService( " GEOM_Superv_i::MakeFacePlaneHW" );
+  MESSAGE("GEOM_Superv_i::MakeFacePlaneHW");
+  get3DPrimOp();
+  GEOM::GEOM_Object_ptr anObj = my3DPrimOp->MakeFacePlaneHW(theFace, theH, theW);
+  endService( " GEOM_Superv_i::MakeFacePlaneHW" );
+  return anObj;
+}
+
+//=============================================================================
+//  MakeDiskPntVecR:
+//=============================================================================
+GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeDiskPntVecR (GEOM::GEOM_Object_ptr theCenter,
+                                                     GEOM::GEOM_Object_ptr theVector,
+                                                     CORBA::Double theR)
+{
+  beginService( " GEOM_Superv_i::MakeDiskPntVecR" );
+  MESSAGE("GEOM_Superv_i::MakeDiskPntVecR");
+  get3DPrimOp();
+  GEOM::GEOM_Object_ptr anObj = my3DPrimOp->MakeDiskPntVecR(theCenter, theVector, theR);
+  endService( " GEOM_Superv_i::MakeDiskPntVecR" );
+  return anObj;
+}
+
+//=============================================================================
+//  MakeDiskThreePnt:
+//=============================================================================
+GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeDiskThreePnt (GEOM::GEOM_Object_ptr thePnt1,
+                                                      GEOM::GEOM_Object_ptr thePnt2,
+                                                      GEOM::GEOM_Object_ptr thePnt3)
+{
+  beginService( " GEOM_Superv_i::MakeDiskThreePnt" );
+  MESSAGE("GEOM_Superv_i::MakeDiskThreePnt");
+  get3DPrimOp();
+  GEOM::GEOM_Object_ptr anObj = my3DPrimOp->MakeDiskThreePnt(thePnt1, thePnt2, thePnt3);
+  endService( " GEOM_Superv_i::MakeDiskThreePnt" );
+  return anObj;
+}
+
 //=============================================================================
 //  MakeCylinderPntVecRH:
 //=============================================================================
@@ -880,6 +981,20 @@ GEOM::GEOM_Object_ptr GEOM_Superv_i::MakePrismVecH (GEOM::GEOM_Object_ptr theBas
   return anObj;
 }
 
+//=============================================================================
+//  MakePrismVecH2Ways:
+//=============================================================================
+GEOM::GEOM_Object_ptr GEOM_Superv_i::MakePrismVecH2Ways (GEOM::GEOM_Object_ptr theBase,
+                                                        GEOM::GEOM_Object_ptr theVec,
+                                                        CORBA::Double         theH)
+{
+  beginService( " GEOM_Superv_i::MakePrismVecH2Ways" );
+  MESSAGE("GEOM_Superv_i::MakePrismVecH2Ways");
+  get3DPrimOp();
+  GEOM::GEOM_Object_ptr anObj = my3DPrimOp->MakePrismVecH2Ways(theBase, theVec, theH);
+  endService( " GEOM_Superv_i::MakePrismVecH2Ways" );
+  return anObj;
+}
 
 //=============================================================================
 //  MakePrismTwoPnt:
@@ -896,6 +1011,49 @@ GEOM::GEOM_Object_ptr GEOM_Superv_i::MakePrismTwoPnt (GEOM::GEOM_Object_ptr theB
   return anObj;
 }
 
+//=============================================================================
+//  MakePrismTwoPnt2Ways:
+//=============================================================================
+GEOM::GEOM_Object_ptr GEOM_Superv_i::MakePrismTwoPnt2Ways (GEOM::GEOM_Object_ptr theBase,
+                                                          GEOM::GEOM_Object_ptr thePoint1,
+                                                          GEOM::GEOM_Object_ptr thePoint2)
+{
+  beginService( " GEOM_Superv_i::MakePrismTwoPnt2Ways" );
+  MESSAGE("GEOM_Superv_i::MakePrismTwoPnt2Ways");
+  get3DPrimOp();
+  GEOM::GEOM_Object_ptr anObj = my3DPrimOp->MakePrismTwoPnt2Ways(theBase, thePoint1, thePoint2);
+  endService( " GEOM_Superv_i::MakePrismTwoPnt2Ways" );
+  return anObj;
+}
+
+//=============================================================================
+//  MakePrismDXDYDZ:
+//=============================================================================
+GEOM::GEOM_Object_ptr GEOM_Superv_i::MakePrismDXDYDZ (GEOM::GEOM_Object_ptr theBase,
+                     CORBA::Double theDX, CORBA::Double theDY, CORBA::Double theDZ)
+{
+  beginService( " GEOM_Superv_i::MakePrismDXDYDZ" );
+  MESSAGE("GEOM_Superv_i::MakePrismDXDYDZ");
+  get3DPrimOp();
+  GEOM::GEOM_Object_ptr anObj = my3DPrimOp->MakePrismDXDYDZ(theBase, theDX, theDY, theDZ);
+  endService( " GEOM_Superv_i::MakePrismDXDYDZ" );
+  return anObj;
+}
+
+//=============================================================================
+//  MakePrismDXDYDZ:
+//=============================================================================
+GEOM::GEOM_Object_ptr GEOM_Superv_i::MakePrismDXDYDZ2Ways (GEOM::GEOM_Object_ptr theBase,
+                     CORBA::Double theDX, CORBA::Double theDY, CORBA::Double theDZ)
+{
+  beginService( " GEOM_Superv_i::MakePrismDXDYDZ2Ways" );
+  MESSAGE("GEOM_Superv_i::MakePrismDXDYDZ2Ways");
+  get3DPrimOp();
+  GEOM::GEOM_Object_ptr anObj = my3DPrimOp->MakePrismDXDYDZ2Ways(theBase, theDX, theDY, theDZ);
+  endService( " GEOM_Superv_i::MakePrismDXDYDZ2Ways" );
+  return anObj;
+}
+
 //=============================================================================
 //  MakePipe:
 //=============================================================================
@@ -925,18 +1083,33 @@ GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeRevolutionAxisAngle (GEOM::GEOM_Object_
   return anObj;
 }
 
+//=============================================================================
+//  MakeRevolutionAxisAngle:
+//=============================================================================
+GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeRevolutionAxisAngle2Ways (GEOM::GEOM_Object_ptr theBase,
+                                                                  GEOM::GEOM_Object_ptr theAxis,
+                                                                  CORBA::Double theAngle)
+{
+  beginService( " GEOM_Superv_i::MakeRevolutionAxisAngle2Ways" );
+  MESSAGE("GEOM_Superv_i::MakeRevolutionAxisAngle2Ways");
+  get3DPrimOp();
+  GEOM::GEOM_Object_ptr anObj = my3DPrimOp->MakeRevolutionAxisAngle2Ways(theBase, theAxis, theAngle);
+  endService( " GEOM_Superv_i::MakeRevolutionAxisAngle2Ways" );
+  return anObj;
+}
+
 //=============================================================================
 //  MakeFilling:
 //=============================================================================
 GEOM::GEOM_Object_ptr GEOM_Superv_i::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)
 {
   beginService( " GEOM_Superv_i::MakeFilling" );
   MESSAGE("GEOM_Superv_i::MakeFilling");
   get3DPrimOp();
-  GEOM::GEOM_Object_ptr anObj = my3DPrimOp->MakeFilling(theShape, theMinDeg, theMaxDeg, theTol2D, theTol3D, theNbIter);
+  GEOM::GEOM_Object_ptr anObj = my3DPrimOp->MakeFilling(theShape, theMinDeg, theMaxDeg, theTol2D, theTol3D, theNbIter, theApprox);
   endService( " GEOM_Superv_i::MakeFilling" );
   return anObj;
 }
@@ -978,11 +1151,12 @@ GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeThruSections(const GEOM::ListOfGO& theS
 //=============================================================================
 //  MakePipe:
 //=============================================================================
-GEOM::GEOM_Object_ptr GEOM_Superv_i::MakePipeWithDifferentSections(const GEOM::ListOfGO& theBases,
-                                                     const GEOM::ListOfGO& theLocations,
-                                                     GEOM::GEOM_Object_ptr thePath,
-                                                     CORBA::Boolean theWithContact,
-                                                     CORBA::Boolean theWithCorrections)
+GEOM::GEOM_Object_ptr GEOM_Superv_i::MakePipeWithDifferentSections
+                     (const GEOM::ListOfGO& theBases,
+                     const GEOM::ListOfGO& theLocations,
+                     GEOM::GEOM_Object_ptr thePath,
+                     CORBA::Boolean theWithContact,
+                     CORBA::Boolean theWithCorrections)
 {
   beginService( " GEOM_Superv_i::MakePipeWithDifferentSections" );
   MESSAGE("GEOM_Superv_i::MakePipeWithDifferentSections");
@@ -991,6 +1165,48 @@ GEOM::GEOM_Object_ptr GEOM_Superv_i::MakePipeWithDifferentSections(const GEOM::L
   endService( " GEOM_Superv_i::MakePipeWithDifferentSections" );
   return anObj;
 }
+
+
+//=============================================================================
+//  MakePipe:
+//=============================================================================
+GEOM::GEOM_Object_ptr GEOM_Superv_i::MakePipeWithShellSections
+                   (const GEOM::ListOfGO& theBases,
+                   const GEOM::ListOfGO& theSubBases,
+                   const GEOM::ListOfGO& theLocations,
+                   GEOM::GEOM_Object_ptr thePath,
+                   CORBA::Boolean theWithContact,
+                   CORBA::Boolean theWithCorrections)
+{
+  beginService( " GEOM_Superv_i::MakePipeWithShellSections" );
+  MESSAGE("GEOM_Superv_i::MakePipeWithShellSections");
+  get3DPrimOp();
+  GEOM::GEOM_Object_ptr anObj =
+    my3DPrimOp->MakePipeWithShellSections(theBases, theSubBases,
+                                         theLocations, thePath,
+                                         theWithContact, theWithCorrections);
+  endService( " GEOM_Superv_i::MakePipeWithShellSections" );
+  return anObj;
+}
+
+
+//=============================================================================
+//  MakePipe:
+//=============================================================================
+GEOM::GEOM_Object_ptr GEOM_Superv_i::MakePipeShellsWithoutPath
+                   (const GEOM::ListOfGO& theBases,
+                   const GEOM::ListOfGO& theLocations)
+{
+  beginService( " GEOM_Superv_i::MakePipeShellsWithoutPath" );
+  MESSAGE("GEOM_Superv_i::MakePipeShellsWithoutPath");
+  get3DPrimOp();
+  GEOM::GEOM_Object_ptr anObj =
+    my3DPrimOp->MakePipeShellsWithoutPath(theBases,theLocations);
+  endService( " GEOM_Superv_i::MakePipeShellsWithoutPath" );
+  return anObj;
+}
+
+
 //=============================================================================
 //  MakeFuse:
 //=============================================================================
@@ -1014,7 +1230,8 @@ GEOM::GEOM_Object_ptr GEOM_Superv_i::MakePartition (GEOM::GEOM_List_ptr   theSha
                                                    GEOM::GEOM_List_ptr   theRemoveInside,
                                                    CORBA::Short      theLimit,
                                                    CORBA::Boolean    theRemoveWebs,
-                                                   GEOM::GEOM_List_ptr theMaterials)
+                                                   GEOM::GEOM_List_ptr theMaterials,
+                                                   CORBA::Short theKeepNonlimitShapes)
 {
   beginService( " GEOM_Superv_i::MakePartition" );
   MESSAGE("GEOM_Superv_i::MakePartition");
@@ -1030,9 +1247,11 @@ GEOM::GEOM_Object_ptr GEOM_Superv_i::MakePartition (GEOM::GEOM_List_ptr   theSha
     dynamic_cast<GEOM_List_i<GEOM::ListOfLong>*>(GetServant(theMaterials, myPOA).in());
   if (aListImplS && aListImplT && aListImplKI && aListImplRI && aListImplM) {
     getBoolOp();
-    GEOM::GEOM_Object_ptr anObj = myBoolOp->MakePartition(aListImplS->GetList(), aListImplT->GetList(), 
-                                                         aListImplKI->GetList(), aListImplRI->GetList(),
-                                                         theLimit, theRemoveWebs, aListImplM->GetList());
+    GEOM::GEOM_Object_ptr anObj =
+      myBoolOp->MakePartition(aListImplS->GetList(), aListImplT->GetList(), 
+                             aListImplKI->GetList(), aListImplRI->GetList(),
+                             theLimit, theRemoveWebs, aListImplM->GetList(),
+                             theKeepNonlimitShapes);
     endService( " GEOM_Superv_i::MakePartition" );
     return anObj;
   }
@@ -1213,6 +1432,23 @@ GEOM::GEOM_Object_ptr GEOM_Superv_i::TranslateVectorCopy (GEOM::GEOM_Object_ptr
   return anObj;
 }
 
+//=============================================================================
+//  TranslateVectorDistance:
+//=============================================================================
+GEOM::GEOM_Object_ptr GEOM_Superv_i::TranslateVectorDistance (GEOM::GEOM_Object_ptr theObject,
+                                                             GEOM::GEOM_Object_ptr theVector,
+                                                             CORBA::Double theDistance,
+                                                             CORBA::Boolean theCopy)
+{
+  beginService( " GEOM_Superv_i::TranslateVectorDistance" );
+  MESSAGE("GEOM_Superv_i::TranslateVectorDistance");
+  getTransfOp();
+  GEOM::GEOM_Object_ptr anObj = myTransfOp->TranslateVectorDistance(theObject, 
+                                                                   theVector, theDistance, theCopy);
+  endService( " GEOM_Superv_i::TranslateVectorDistance" );
+  return anObj;
+}
+
 //=============================================================================
 //  MultiTranslate1D:
 //=============================================================================
@@ -1485,6 +1721,42 @@ GEOM::GEOM_Object_ptr GEOM_Superv_i::ScaleShapeCopy (GEOM::GEOM_Object_ptr theOb
   return anObj;
 }
 
+//=============================================================================
+//  ScaleShapeAlongAxes:
+//=============================================================================
+GEOM::GEOM_Object_ptr GEOM_Superv_i::ScaleShapeAlongAxes (GEOM::GEOM_Object_ptr theObject,
+                                                         GEOM::GEOM_Object_ptr thePoint,
+                                                         CORBA::Double theFactorX,
+                                                         CORBA::Double theFactorY,
+                                                         CORBA::Double theFactorZ)
+{
+  beginService( " GEOM_Superv_i::ScaleShapeAlongAxes" );
+  MESSAGE("GEOM_Superv_i::ScaleShapeAlongAxes");
+  getTransfOp();
+  GEOM::GEOM_Object_ptr anObj = myTransfOp->ScaleShapeAlongAxes
+    (theObject, thePoint, theFactorX, theFactorY, theFactorZ);
+  endService( " GEOM_Superv_i::ScaleShapeAlongAxes" );
+  return anObj;
+}
+
+//=============================================================================
+//  ScaleShapeAlongAxesCopy:
+//=============================================================================
+GEOM::GEOM_Object_ptr GEOM_Superv_i::ScaleShapeAlongAxesCopy (GEOM::GEOM_Object_ptr theObject,
+                                                             GEOM::GEOM_Object_ptr thePoint,
+                                                             CORBA::Double theFactorX,
+                                                             CORBA::Double theFactorY,
+                                                             CORBA::Double theFactorZ)
+{
+  beginService( " GEOM_Superv_i::ScaleShapeAlongAxesCopy" );
+  MESSAGE("GEOM_Superv_i::ScaleShapeAlongAxesCopy");
+  getTransfOp();
+  GEOM::GEOM_Object_ptr anObj = myTransfOp->ScaleShapeAlongAxesCopy
+    (theObject, thePoint, theFactorX, theFactorY, theFactorZ);
+  endService( " GEOM_Superv_i::ScaleShapeAlongAxesCopy" );
+  return anObj;
+}
+
 //=============================================================================
 //  PositionShape:
 //=============================================================================
@@ -1652,16 +1924,51 @@ GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeCompound (GEOM::GEOM_List_ptr theShapes
 //  MakeGlueFaces:
 //=============================================================================
 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeGlueFaces (GEOM::GEOM_Object_ptr theShape,
-                                                               CORBA::Double   theTolerance)
+                                                   CORBA::Double   theTolerance,
+                                                   CORBA::Boolean doKeepNonSolids)
 {
   beginService( " GEOM_Superv_i::MakeGlueFaces" );
   MESSAGE("GEOM_Superv_i::MakeGlueFaces");
   getShapesOp();
-  GEOM::GEOM_Object_ptr anObj = myShapesOp->MakeGlueFaces(theShape, theTolerance);
+  GEOM::GEOM_Object_ptr anObj =
+    myShapesOp->MakeGlueFaces(theShape, theTolerance, doKeepNonSolids);
   endService( " GEOM_Superv_i::MakeGlueFaces" );
   return anObj;
 }
 
+//=============================================================================
+//  GetGlueFaces:
+//=============================================================================
+GEOM::GEOM_List_ptr GEOM_Superv_i::GetGlueFaces (GEOM::GEOM_Object_ptr theShape,
+                                                CORBA::Double theTolerance)
+{
+  beginService( " GEOM_Superv_i::GetGlueFaces" );
+  MESSAGE("GEOM_Superv_i::GetGlueFaces");
+  getShapesOp();
+  GEOM::ListOfGO* aList = myShapesOp->GetGlueFaces(theShape, theTolerance);
+  GEOM_List_i<GEOM::ListOfGO>* aListPtr = new GEOM_List_i<GEOM::ListOfGO>(*(aList));
+  MESSAGE(" List of "<<aListPtr->GetList().length()<<" element(s)");
+  endService( " GEOM_Superv_i::GetGlueFaces" );
+  return aListPtr->_this();
+}
+
+//=============================================================================
+//  MakeGlueFacesByList:
+//=============================================================================
+GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeGlueFacesByList (GEOM::GEOM_Object_ptr theShape,
+                                                         CORBA::Double theTolerance,
+                                                         const GEOM::ListOfGO& theFaces,
+                                                         CORBA::Boolean doKeepNonSolids)
+{
+  beginService( " GEOM_Superv_i::MakeGlueFacesByList" );
+  MESSAGE("GEOM_Superv_i::MakeGlueFacesByList");
+  getShapesOp();
+  GEOM::GEOM_Object_ptr anObj =
+    myShapesOp->MakeGlueFacesByList(theShape, theTolerance, theFaces, doKeepNonSolids);
+  endService( " GEOM_Superv_i::MakeGlueFacesByList" );
+  return anObj;
+}
+
 //=============================================================================
 //  MakeExplode:
 //=============================================================================
@@ -1706,6 +2013,7 @@ CORBA::Long GEOM_Superv_i::NumberOfEdges (GEOM::GEOM_Object_ptr theShape)
   return aRes;
 }
 
+
 //=============================================================================
 //  ChangeOrientation:
 //=============================================================================
@@ -1720,6 +2028,46 @@ GEOM::GEOM_Object_ptr GEOM_Superv_i::ChangeOrientation (GEOM::GEOM_Object_ptr th
 }
 
 
+//=============================================================================
+//  GetShapesOnShape:
+//=============================================================================
+GEOM::GEOM_List_ptr GEOM_Superv_i::GetShapesOnShape
+                                          (GEOM::GEOM_Object_ptr theCheckShape,
+                                          GEOM::GEOM_Object_ptr theShape,
+                                          CORBA::Short theShapeType,
+                                          GEOM::shape_state theState)
+{
+  beginService( " GEOM_Superv_i::GetShapesOnShape" );
+  MESSAGE("GEOM_Superv_i::GetShapesOnShape");
+  getShapesOp();
+  GEOM::ListOfGO* aList =
+    myShapesOp->GetShapesOnShape(theCheckShape, theShape, theShapeType, theState);
+  GEOM_List_i<GEOM::ListOfGO>* aListPtr = new GEOM_List_i<GEOM::ListOfGO>(*(aList));
+  MESSAGE(" List of "<<aListPtr->GetList().length()<<" element(s)");
+  endService( " GEOM_Superv_i::GetShapesOnShape" );
+  return aListPtr->_this();
+}
+
+
+//=============================================================================
+//  GetShapesOnShapeAsCompound:
+//=============================================================================
+GEOM::GEOM_Object_ptr GEOM_Superv_i::GetShapesOnShapeAsCompound
+                                          (GEOM::GEOM_Object_ptr theCheckShape,
+                                          GEOM::GEOM_Object_ptr theShape,
+                                          CORBA::Short theShapeType,
+                                          GEOM::shape_state theState)
+{
+  beginService( " GEOM_Superv_i::GetShapesOnShapeAsCompound" );
+  MESSAGE("GEOM_Superv_i::GetShapesOnShapeAsCompound");
+  getShapesOp();
+  GEOM::GEOM_Object_ptr anObj = 
+    myShapesOp->GetShapesOnShapeAsCompound(theCheckShape, theShape, theShapeType, theState);
+  endService( " GEOM_Superv_i::GetShapesOnShapeAsCompound" );
+  return anObj;
+}
+
+
 //=============================== BlocksOperations ============================
 //=============================================================================
 //  MakeQuad4Vertices:
@@ -2102,6 +2450,20 @@ GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeCircleThreePnt (GEOM::GEOM_Object_ptr t
   endService( " GEOM_Superv_i::MakeCircleThreePnt" );
   return anObj;
 }
+//=============================================================================
+//  MakeCircleCenter2Pnt:
+//=============================================================================
+GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeCircleCenter2Pnt (GEOM::GEOM_Object_ptr thePnt1,
+                                                          GEOM::GEOM_Object_ptr thePnt2,
+                                                          GEOM::GEOM_Object_ptr thePnt3)
+{
+  beginService( " GEOM_Superv_i::MakeCircleCenter2Pnt" );
+  MESSAGE("GEOM_Superv_i::MakeCircleCenter2Pnt");
+  getCurvesOp();
+  GEOM::GEOM_Object_ptr anObj = myCurvesOp->MakeCircleCenter2Pnt(thePnt1, thePnt2, thePnt3);
+  endService( " GEOM_Superv_i::MakeCircleCenter2Pnt" );
+  return anObj;
+}
 
 //=============================================================================
 //  MakeEllipse:
@@ -2134,6 +2496,22 @@ GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeArc (GEOM::GEOM_Object_ptr thePnt1,
   return anObj;
 }
 
+//=============================================================================
+//  MakeArcCenter:
+//=============================================================================
+GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeArcCenter (GEOM::GEOM_Object_ptr theCenter,
+                                                    GEOM::GEOM_Object_ptr thePnt1,
+                                                    GEOM::GEOM_Object_ptr thePnt2,
+                                                    CORBA::Boolean theSense)
+{
+  beginService( " GEOM_Superv_i::MakeArcCenter" );
+  MESSAGE("GEOM_Superv_i::MakeArcCenter");
+  getCurvesOp();
+  GEOM::GEOM_Object_ptr anObj = myCurvesOp->MakeArcCenter(theCenter, thePnt1, thePnt2,theSense);
+  endService( " GEOM_Superv_i::MakeArcCenter" );
+  return anObj;
+}
+
 //=============================================================================
 //  MakePolyline:
 //=============================================================================
@@ -2242,6 +2620,28 @@ GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeFilletEdges (GEOM::GEOM_Object_ptr theS
   return NULL;
 }
 
+//=============================================================================
+//  MakeFilletEdges R1 R2:
+//=============================================================================
+GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeFilletEdgesR1R2 (GEOM::GEOM_Object_ptr theShape, 
+                                                         CORBA::Double theR1,
+                                                         CORBA::Double theR2,
+                                                         GEOM::GEOM_List_ptr theEdges)
+{
+  beginService( " GEOM_Superv_i::MakeFilletEdgesR1R2" );
+  MESSAGE("GEOM_Superv_i::MakeFilletEdgesR1R2");
+  if (GEOM_List_i<GEOM::ListOfLong>* aListImplE = 
+      dynamic_cast<GEOM_List_i<GEOM::ListOfLong>*>(GetServant(theEdges, myPOA).in())) {
+    getLocalOp();
+    GEOM::GEOM_Object_ptr anObj = myLocalOp->MakeFilletEdgesR1R2(theShape, theR1,
+                                                                 theR2, aListImplE->GetList());
+    endService( " GEOM_Superv_i::MakeFilletEdgesR1R2" );
+    return anObj;
+  }
+  endService( " GEOM_Superv_i::MakeFilletEdgesR1R2" );
+  return NULL;
+}
+
 //=============================================================================
 //  MakeFilletFaces:
 //=============================================================================
@@ -2262,6 +2662,28 @@ GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeFilletFaces (GEOM::GEOM_Object_ptr theS
   return NULL;
 }
 
+//=============================================================================
+//  MakeFilletFaces R1 R2:
+//=============================================================================
+GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeFilletFacesR1R2 (GEOM::GEOM_Object_ptr theShape, 
+                                                         CORBA::Double theR1,
+                                                         CORBA::Double theR2,
+                                                         GEOM::GEOM_List_ptr theFaces)
+{
+  beginService( " GEOM_Superv_i::MakeFilletFacesR1R2" );
+  MESSAGE("GEOM_Superv_i::MakeFilletFacesR1R2");
+  if (GEOM_List_i<GEOM::ListOfLong>* aListImplF = 
+      dynamic_cast<GEOM_List_i<GEOM::ListOfLong>*>(GetServant(theFaces, myPOA).in())) {
+    getLocalOp();
+    GEOM::GEOM_Object_ptr anObj = myLocalOp->MakeFilletFacesR1R2(theShape, theR1, theR2,
+                                                                 aListImplF->GetList());
+    endService( " GEOM_Superv_i::MakeFilletFacesR1R2" );
+    return anObj;
+  }
+  endService( " GEOM_Superv_i::MakeFilletFacesR1R2" );
+  return NULL;
+}
+
 //=============================================================================
 //  MakeChamferAll:
 //=============================================================================
@@ -2290,6 +2712,21 @@ GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeChamferEdge (GEOM::GEOM_Object_ptr theS
   return anObj;
 }
 
+//=============================================================================
+//  MakeChamferEdgeAD:
+//=============================================================================
+GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeChamferEdgeAD (GEOM::GEOM_Object_ptr theShape,
+                                                       CORBA::Double theD, CORBA::Double theAngle,
+                                                       CORBA::Long theFace1, CORBA::Long theFace2)
+{
+  beginService( " GEOM_Superv_i::MakeChamferEdgeAD" );
+  MESSAGE("GEOM_Superv_i::MakeChamferEdgeAD");
+  getLocalOp();
+  GEOM::GEOM_Object_ptr anObj = myLocalOp->MakeChamferEdgeAD(theShape, theD, theAngle, theFace1, theFace2);
+  endService( " GEOM_Superv_i::MakeChamferEdgeAD" );
+  return anObj;
+}
+
 //=============================================================================
 //  MakeChamferFaces:
 //=============================================================================
@@ -2310,6 +2747,66 @@ GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeChamferFaces (GEOM::GEOM_Object_ptr the
   return NULL;
 }
 
+//=============================================================================
+//  MakeChamferFacesAD:
+//=============================================================================
+GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeChamferFacesAD (GEOM::GEOM_Object_ptr theShape,
+                                                        CORBA::Double theD, CORBA::Double theAngle,
+                                                        GEOM::GEOM_List_ptr theFaces)
+{
+  beginService( " GEOM_Superv_i::MakeChamferFacesAD" );
+  MESSAGE("GEOM_Superv_i::MakeChamferFacesAD");
+  if (GEOM_List_i<GEOM::ListOfLong>* aListImplF = 
+      dynamic_cast<GEOM_List_i<GEOM::ListOfLong>*>(GetServant(theFaces, myPOA).in())) {
+    getLocalOp();
+    GEOM::GEOM_Object_ptr anObj = myLocalOp->MakeChamferFacesAD(theShape, theD, theAngle, aListImplF->GetList());
+    endService( " GEOM_Superv_i::MakeChamferFacesAD" );
+    return anObj;
+  }
+  endService( " GEOM_Superv_i::MakeChamferFacesAD" );
+  return NULL;
+}
+
+//=============================================================================
+//  MakeChamferEdges:
+//=============================================================================
+GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeChamferEdges (GEOM::GEOM_Object_ptr theShape,
+                                                      CORBA::Double theD1, CORBA::Double theD2,
+                                                      GEOM::GEOM_List_ptr theEdges)
+{
+  beginService( " GEOM_Superv_i::MakeChamferEdges" );
+  MESSAGE("GEOM_Superv_i::MakeChamferEdges");
+  if (GEOM_List_i<GEOM::ListOfLong>* aListImplF = 
+      dynamic_cast<GEOM_List_i<GEOM::ListOfLong>*>(GetServant(theEdges, myPOA).in())) {
+    getLocalOp();
+    GEOM::GEOM_Object_ptr anObj = myLocalOp->MakeChamferEdges(theShape, theD1, theD2, aListImplF->GetList());
+    endService( " GEOM_Superv_i::MakeChamferEdges" );
+    return anObj;
+  }
+  endService( " GEOM_Superv_i::MakeChamferEdges" );
+  return NULL;
+}
+
+//=============================================================================
+//  MakeChamferEdgesAD:
+//=============================================================================
+GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeChamferEdgesAD (GEOM::GEOM_Object_ptr theShape,
+                                                        CORBA::Double theD, CORBA::Double theAngle,
+                                                        GEOM::GEOM_List_ptr theEdges)
+{
+  beginService( " GEOM_Superv_i::MakeChamferEdgesAD" );
+  MESSAGE("GEOM_Superv_i::MakeChamferEdgesAD");
+  if (GEOM_List_i<GEOM::ListOfLong>* aListImplF = 
+      dynamic_cast<GEOM_List_i<GEOM::ListOfLong>*>(GetServant(theEdges, myPOA).in())) {
+    getLocalOp();
+    GEOM::GEOM_Object_ptr anObj = myLocalOp->MakeChamferEdgesAD(theShape, theD, theAngle, aListImplF->GetList());
+    endService( " GEOM_Superv_i::MakeChamferEdgesAD" );
+    return anObj;
+  }
+  endService( " GEOM_Superv_i::MakeChamferEdgesAD" );
+  return NULL;
+}
+
 //=============================================================================
 //  MakeArchimede:
 //=============================================================================
@@ -2435,7 +2932,8 @@ extern "C"
                                                      const char * interfaceName)
   {
     GEOM_Superv_i * myGEOM_Superv_i = new GEOM_Superv_i(orb, poa, contId, instanceName, interfaceName);
-    myGEOM_Superv_i->register_name("/myGEOM_Superv");
+    //Don't understand the reason why this component is registered ???
+//    myGEOM_Superv_i->register_name("/myGEOM_Superv");
     return myGEOM_Superv_i->getId() ;
   }
 }