Salome HOME
Fix compilation error and some warnings
[modules/geom.git] / src / GEOM_I / GEOM_IBasicOperations_i.cc
index f475de827f6ea049caa991d573a4e17543d69d5a..f44df5b3c5743b6ebeff153da8a44161aa728d37 100644 (file)
@@ -1,24 +1,25 @@
-//  Copyright (C) 2007-2008  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2016  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
+// 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 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, or (at your option) any later version.
 //
-//  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.
+// 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
+// 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
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+
 #include <Standard_Stream.hxx>
 
 #include "GEOM_IBasicOperations_i.hh"
@@ -36,8 +37,8 @@
  */
 //=============================================================================
 GEOM_IBasicOperations_i::GEOM_IBasicOperations_i (PortableServer::POA_ptr thePOA,
-                                                 GEOM::GEOM_Gen_ptr theEngine,
-                                                 ::GEOMImpl_IBasicOperations* theImpl)
+                                                  GEOM::GEOM_Gen_ptr theEngine,
+                                                  ::GEOMImpl_IBasicOperations* theImpl)
      :GEOM_IOperations_i(thePOA, theEngine, theImpl)
 {
   MESSAGE("GEOM_IBasicOperations_i::GEOM_IBasicOperations_i");
@@ -67,9 +68,8 @@ GEOM::GEOM_Object_ptr GEOM_IBasicOperations_i::MakePointXYZ
   //Set a not done flag
   GetOperations()->SetNotDone();
 
-   //Create the point
-
-  Handle(GEOM_Object) anObject = GetOperations()->MakePointXYZ(theX, theY, theZ);
+  //Create the point
+  Handle(::GEOM_Object) anObject = GetOperations()->MakePointXYZ(theX, theY, theZ);
   if (!GetOperations()->IsDone() || anObject.IsNull())
     return aGEOMObject._retn();
 
@@ -89,18 +89,13 @@ GEOM::GEOM_Object_ptr GEOM_IBasicOperations_i::MakePointWithReference
   //Set a not done flag
   GetOperations()->SetNotDone();
 
-  if(theReference == NULL) return aGEOMObject._retn();
-
   //Get the reference point
-
-  Handle(GEOM_Object) aRefernce = GetOperations()->GetEngine()->GetObject
-    (theReference->GetStudyID(), theReference->GetEntry());
-  if (aRefernce.IsNull()) return aGEOMObject._retn();
+  Handle(::GEOM_Object) aReference = GetObjectImpl(theReference);
+  if (aReference.IsNull()) return aGEOMObject._retn();
 
   //Create the point
-
-  Handle(GEOM_Object) anObject =
-    GetOperations()->MakePointWithReference(aRefernce, theX, theY, theZ);
+  Handle(::GEOM_Object) anObject =
+    GetOperations()->MakePointWithReference(aReference, theX, theY, theZ);
   if (!GetOperations()->IsDone() || anObject.IsNull())
     return aGEOMObject._retn();
 
@@ -120,19 +115,13 @@ GEOM::GEOM_Object_ptr GEOM_IBasicOperations_i::MakePointOnLinesIntersection
   //Set a not done flag
   GetOperations()->SetNotDone();
 
-  if (theLine1 == NULL || theLine2 == NULL) return aGEOMObject._retn();
-
   //Get the reference Lines
-
-  Handle(GEOM_Object) aRef1 = GetOperations()->GetEngine()->GetObject
-    (theLine1->GetStudyID(), theLine1->GetEntry());
-  Handle(GEOM_Object) aRef2 = GetOperations()->GetEngine()->GetObject
-    (theLine2->GetStudyID(), theLine2->GetEntry());
+  Handle(::GEOM_Object) aRef1 = GetObjectImpl(theLine1);
+  Handle(::GEOM_Object) aRef2 = GetObjectImpl(theLine2);
   if (aRef1.IsNull() || aRef2.IsNull()) return aGEOMObject._retn();
 
   //Create the point
-
-  Handle(GEOM_Object) anObject =
+  Handle(::GEOM_Object) anObject =
     GetOperations()->MakePointOnLinesIntersection(aRef1, aRef2);
   if (!GetOperations()->IsDone() || anObject.IsNull())
     return aGEOMObject._retn();
@@ -140,38 +129,97 @@ GEOM::GEOM_Object_ptr GEOM_IBasicOperations_i::MakePointOnLinesIntersection
   return GetObject(anObject);
 }
 
-
 //=============================================================================
 /*!
  *  MakePointOnCurve
  */
 //=============================================================================
 GEOM::GEOM_Object_ptr GEOM_IBasicOperations_i::MakePointOnCurve
-                  (GEOM::GEOM_Object_ptr theCurve,  CORBA::Double theParameter)
+                  (GEOM::GEOM_Object_ptr theCurve,
+                   CORBA::Double         theParameter,
+                   CORBA::Boolean        takeOrientationIntoAccount)
 {
   GEOM::GEOM_Object_var aGEOMObject;
 
   //Set a not done flag
   GetOperations()->SetNotDone();
 
-  if (theCurve == NULL) return aGEOMObject._retn();
+  //Get the reference curve
+  Handle(::GEOM_Object) aReference = GetObjectImpl(theCurve);
+  if (aReference.IsNull()) return aGEOMObject._retn();
+
+  //Create the point
+  Handle(::GEOM_Object) anObject = GetOperations()->MakePointOnCurve
+        (aReference, theParameter, takeOrientationIntoAccount);
+  if (!GetOperations()->IsDone() || anObject.IsNull())
+    return aGEOMObject._retn();
+
+  return GetObject(anObject);
+}
+
+//=============================================================================
+/*!
+ *  MakePointOnCurveByLength
+ */
+//=============================================================================
+GEOM::GEOM_Object_ptr GEOM_IBasicOperations_i::MakePointOnCurveByLength
+                  (GEOM::GEOM_Object_ptr theCurve,  
+                  CORBA::Double         theLength,
+                  GEOM::GEOM_Object_ptr theStartPoint)
+{
+  GEOM::GEOM_Object_var aGEOMObject;
+
+  //Set a not done flag
+  GetOperations()->SetNotDone();
 
   //Get the reference curve
+  Handle(::GEOM_Object) aReference = GetObjectImpl(theCurve);
+  if (aReference.IsNull()) return aGEOMObject._retn();
 
-  Handle(GEOM_Object) aRefernce = GetOperations()->GetEngine()->GetObject
-    (theCurve->GetStudyID(), theCurve->GetEntry());
-  if (aRefernce.IsNull()) return aGEOMObject._retn();
+  //Get the reference point (can be NULL)
+  Handle(::GEOM_Object) aRefPoint;
+  if (!CORBA::is_nil(theStartPoint)) {
+    aRefPoint = GetObjectImpl(theStartPoint);
+  }
 
   //Create the point
-
-  Handle(GEOM_Object) anObject =
-    GetOperations()->MakePointOnCurve(aRefernce, theParameter);
+  Handle(::GEOM_Object) anObject =
+    GetOperations()->MakePointOnCurveByLength(aReference, theLength, aRefPoint);
   if (!GetOperations()->IsDone() || anObject.IsNull())
     return aGEOMObject._retn();
 
   return GetObject(anObject);
 }
 
+//=============================================================================
+/*!
+ *  MakePointOnCurveByCoord
+ */
+//=============================================================================
+GEOM::GEOM_Object_ptr GEOM_IBasicOperations_i::MakePointOnCurveByCoord
+                  (GEOM::GEOM_Object_ptr theCurve, 
+                   CORBA::Double theXParameter,
+                   CORBA::Double theYParameter,
+                   CORBA::Double theZParameter)
+{
+  GEOM::GEOM_Object_var aGEOMObject;
+
+  //Set a not done flag
+  GetOperations()->SetNotDone();
+
+  //Get the reference curve
+  Handle(::GEOM_Object) aReference = GetObjectImpl(theCurve);
+  if (aReference.IsNull()) return aGEOMObject._retn();
+
+  //Create the point
+  Handle(::GEOM_Object) anObject =
+    GetOperations()->MakePointOnCurveByCoord(aReference, theXParameter,
+                                             theYParameter, theZParameter);
+  if (!GetOperations()->IsDone() || anObject.IsNull())
+    return aGEOMObject._retn();
+
+  return GetObject(anObject);
+}
 
 //=============================================================================
 /*!
@@ -180,30 +228,80 @@ GEOM::GEOM_Object_ptr GEOM_IBasicOperations_i::MakePointOnCurve
 //=============================================================================
 GEOM::GEOM_Object_ptr GEOM_IBasicOperations_i::MakePointOnSurface
                                              (GEOM::GEOM_Object_ptr theSurface,
-                                             CORBA::Double theUParameter,
-                                             CORBA::Double theVParameter)
+                                              CORBA::Double theUParameter,
+                                              CORBA::Double theVParameter)
 {
   GEOM::GEOM_Object_var aGEOMObject;
 
   //Set a not done flag
   GetOperations()->SetNotDone();
 
-  if (theSurface == NULL) return aGEOMObject._retn();
+  //Get the reference surface
+  Handle(::GEOM_Object) aReference = GetObjectImpl(theSurface);
+  if (aReference.IsNull()) return aGEOMObject._retn();
+
+  //Create the point
+  Handle(::GEOM_Object) anObject =
+    GetOperations()->MakePointOnSurface(aReference, theUParameter, theVParameter);
+  if (!GetOperations()->IsDone() || anObject.IsNull())
+    return aGEOMObject._retn();
+
+  return GetObject(anObject);
+}
+
+//=============================================================================
+/*!
+ *  MakePointOnSurfaceByCoord
+ */
+//=============================================================================
+GEOM::GEOM_Object_ptr GEOM_IBasicOperations_i::MakePointOnSurfaceByCoord
+                                             (GEOM::GEOM_Object_ptr theSurface,
+                                              CORBA::Double theXParameter,
+                                              CORBA::Double theYParameter,
+                                              CORBA::Double theZParameter)
+{
+  GEOM::GEOM_Object_var aGEOMObject;
+
+  //Set a not done flag
+  GetOperations()->SetNotDone();
 
   //Get the reference surface
-  Handle(GEOM_Object) aRefernce = GetOperations()->GetEngine()->GetObject
-    (theSurface->GetStudyID(), theSurface->GetEntry());
-  if (aRefernce.IsNull()) return aGEOMObject._retn();
+  Handle(::GEOM_Object) aReference = GetObjectImpl(theSurface);
+  if (aReference.IsNull()) return aGEOMObject._retn();
 
   //Create the point
-  Handle(GEOM_Object) anObject =
-    GetOperations()->MakePointOnSurface(aRefernce, theUParameter, theVParameter);
+  Handle(::GEOM_Object) anObject =
+    GetOperations()->MakePointOnSurfaceByCoord(aReference, theXParameter,
+                                               theYParameter, theZParameter);
   if (!GetOperations()->IsDone() || anObject.IsNull())
     return aGEOMObject._retn();
 
   return GetObject(anObject);
 }
 
+//=============================================================================
+/*!
+ *  MakePointOnFace
+ */
+//=============================================================================
+GEOM::GEOM_Object_ptr GEOM_IBasicOperations_i::MakePointOnFace (GEOM::GEOM_Object_ptr theFace)
+{
+  GEOM::GEOM_Object_var aGEOMObject;
+
+  //Set a not done flag
+  GetOperations()->SetNotDone();
+
+  //Get the reference face
+  Handle(::GEOM_Object) aReference = GetObjectImpl(theFace);
+  if (aReference.IsNull()) return aGEOMObject._retn();
+
+  //Create the point
+  Handle(::GEOM_Object) anObject = GetOperations()->MakePointOnFace(aReference);
+  if (!GetOperations()->IsDone() || anObject.IsNull())
+    return aGEOMObject._retn();
+
+  return GetObject(anObject);
+}
 
 //=============================================================================
 /*!
@@ -218,25 +316,19 @@ GEOM::GEOM_Object_ptr GEOM_IBasicOperations_i::MakeTangentOnCurve
   //Set a not done flag
   GetOperations()->SetNotDone();
 
-  if (theCurve == NULL) return aGEOMObject._retn();
-
   //Get the reference curve
+  Handle(::GEOM_Object) aReference = GetObjectImpl(theCurve);
+  if (aReference.IsNull()) return aGEOMObject._retn();
 
-  Handle(GEOM_Object) aRefernce = GetOperations()->GetEngine()->GetObject
-    (theCurve->GetStudyID(), theCurve->GetEntry());
-  if (aRefernce.IsNull()) return aGEOMObject._retn();
-
-  //Create the point
-
-  Handle(GEOM_Object) anObject =
-    GetOperations()->MakeTangentOnCurve(aRefernce, theParameter);
+  //Create the vector
+  Handle(::GEOM_Object) anObject =
+    GetOperations()->MakeTangentOnCurve(aReference, theParameter);
   if (!GetOperations()->IsDone() || anObject.IsNull())
     return aGEOMObject._retn();
 
   return GetObject(anObject);
 }
 
-
 //=============================================================================
 /*!
  *  MakeVectorDXDYDZ
@@ -252,7 +344,7 @@ GEOM::GEOM_Object_ptr GEOM_IBasicOperations_i::MakeVectorDXDYDZ
 
   //Create the Vector
 
-  Handle(GEOM_Object) anObject = GetOperations()->MakeVectorDXDYDZ(theDX, theDY, theDZ);
+  Handle(::GEOM_Object) anObject = GetOperations()->MakeVectorDXDYDZ(theDX, theDY, theDZ);
   if (!GetOperations()->IsDone() || anObject.IsNull())
     return aGEOMObject._retn();
 
@@ -272,20 +364,13 @@ GEOM::GEOM_Object_ptr GEOM_IBasicOperations_i::MakeVectorTwoPnt
   //Set a not done flag
   GetOperations()->SetNotDone();
 
-  if (thePnt1 == NULL || thePnt2 == NULL) return aGEOMObject._retn();
-
   //Get the reference points
-
-  Handle(GEOM_Object) aRef1 = GetOperations()->GetEngine()->GetObject
-    (thePnt1->GetStudyID(), thePnt1->GetEntry());
-  Handle(GEOM_Object) aRef2 = GetOperations()->GetEngine()->GetObject
-    (thePnt2->GetStudyID(), thePnt2->GetEntry());
+  Handle(::GEOM_Object) aRef1 = GetObjectImpl(thePnt1);
+  Handle(::GEOM_Object) aRef2 = GetObjectImpl(thePnt2);
   if (aRef1.IsNull() || aRef2.IsNull()) return aGEOMObject._retn();
 
   //Create the vector
-
-  Handle(GEOM_Object) anObject =
-    GetOperations()->MakeVectorTwoPnt(aRef1, aRef2);
+  Handle(::GEOM_Object) anObject = GetOperations()->MakeVectorTwoPnt(aRef1, aRef2);
   if (!GetOperations()->IsDone() || anObject.IsNull())
     return aGEOMObject._retn();
 
@@ -306,20 +391,13 @@ GEOM::GEOM_Object_ptr GEOM_IBasicOperations_i::MakeLine
   //Set a not done flag
   GetOperations()->SetNotDone();
 
-  if (thePnt == NULL || theDir == NULL) return aGEOMObject._retn();
-
   //Get the reference objects
-
-  Handle(GEOM_Object) aRef1 = GetOperations()->GetEngine()->GetObject
-    (thePnt->GetStudyID(), thePnt->GetEntry());
-  Handle(GEOM_Object) aRef2 = GetOperations()->GetEngine()->GetObject
-    (theDir->GetStudyID(), theDir->GetEntry());
+  Handle(::GEOM_Object) aRef1 = GetObjectImpl(thePnt);
+  Handle(::GEOM_Object) aRef2 = GetObjectImpl(theDir);
   if (aRef1.IsNull() || aRef2.IsNull()) return aGEOMObject._retn();
 
   //Create the Line
-
-  Handle(GEOM_Object) anObject =
-    GetOperations()->MakeLine(aRef1, aRef2);
+  Handle(::GEOM_Object) anObject = GetOperations()->MakeLine(aRef1, aRef2);
   if (!GetOperations()->IsDone() || anObject.IsNull())
     return aGEOMObject._retn();
 
@@ -339,20 +417,13 @@ GEOM::GEOM_Object_ptr GEOM_IBasicOperations_i::MakeLineTwoPnt
   //Set a not done flag
   GetOperations()->SetNotDone();
 
-  if (thePnt1 == NULL || thePnt2 == NULL) return aGEOMObject._retn();
-
   //Get the reference points
-
-  Handle(GEOM_Object) aRef1 = GetOperations()->GetEngine()->GetObject
-    (thePnt1->GetStudyID(), thePnt1->GetEntry());
-  Handle(GEOM_Object) aRef2 = GetOperations()->GetEngine()->GetObject
-    (thePnt2->GetStudyID(), thePnt2->GetEntry());
+  Handle(::GEOM_Object) aRef1 = GetObjectImpl(thePnt1);
+  Handle(::GEOM_Object) aRef2 = GetObjectImpl(thePnt2);
   if (aRef1.IsNull() || aRef2.IsNull()) return aGEOMObject._retn();
 
   //Create the Line
-
-  Handle(GEOM_Object) anObject =
-    GetOperations()->MakeLineTwoPnt(aRef1, aRef2);
+  Handle(::GEOM_Object) anObject = GetOperations()->MakeLineTwoPnt(aRef1, aRef2);
   if (!GetOperations()->IsDone() || anObject.IsNull())
     return aGEOMObject._retn();
 
@@ -372,19 +443,13 @@ GEOM::GEOM_Object_ptr GEOM_IBasicOperations_i::MakeLineTwoFaces
   //Set a not done flag
   GetOperations()->SetNotDone();
 
-  if (theFace1 == NULL || theFace2 == NULL) return aGEOMObject._retn();
-
   //Get the reference points
-
-  Handle(GEOM_Object) aRef1 = GetOperations()->GetEngine()->GetObject
-    (theFace1->GetStudyID(), theFace1->GetEntry());
-  Handle(GEOM_Object) aRef2 = GetOperations()->GetEngine()->GetObject
-    (theFace2->GetStudyID(), theFace2->GetEntry());
+  Handle(::GEOM_Object) aRef1 = GetObjectImpl(theFace1);
+  Handle(::GEOM_Object) aRef2 = GetObjectImpl(theFace2);
   if (aRef1.IsNull() || aRef2.IsNull()) return aGEOMObject._retn();
 
   //Create the Line
-
-  Handle(GEOM_Object) anObject =
+  Handle(::GEOM_Object) anObject =
     GetOperations()->MakeLineTwoFaces(aRef1, aRef2);
   if (!GetOperations()->IsDone() || anObject.IsNull())
     return aGEOMObject._retn();
@@ -392,6 +457,7 @@ GEOM::GEOM_Object_ptr GEOM_IBasicOperations_i::MakeLineTwoFaces
   return GetObject(anObject);
 }
 
+
 //=============================================================================
 /*!
  *  MakePlanePntVec
@@ -399,26 +465,20 @@ GEOM::GEOM_Object_ptr GEOM_IBasicOperations_i::MakeLineTwoFaces
 //=============================================================================
 GEOM::GEOM_Object_ptr GEOM_IBasicOperations_i::MakePlanePntVec
                  (GEOM::GEOM_Object_ptr thePnt, GEOM::GEOM_Object_ptr theVec,
-                 CORBA::Double theTrimSize)
+                  CORBA::Double theTrimSize)
 {
   GEOM::GEOM_Object_var aGEOMObject;
 
   //Set a not done flag
   GetOperations()->SetNotDone();
 
-  if (thePnt == NULL || theVec == NULL) return aGEOMObject._retn();
-
   //Get the references
-
-  Handle(GEOM_Object) aRef1 = GetOperations()->GetEngine()->GetObject
-    (thePnt->GetStudyID(), thePnt->GetEntry());
-  Handle(GEOM_Object) aRef2 = GetOperations()->GetEngine()->GetObject
-    (theVec->GetStudyID(), theVec->GetEntry());
+  Handle(::GEOM_Object) aRef1 = GetObjectImpl(thePnt);
+  Handle(::GEOM_Object) aRef2 = GetObjectImpl(theVec);
   if (aRef1.IsNull() || aRef2.IsNull()) return aGEOMObject._retn();
 
   //Create the plane
-
-  Handle(GEOM_Object) anObject =
+  Handle(::GEOM_Object) anObject =
     GetOperations()->MakePlanePntVec(aRef1, aRef2, theTrimSize);
   if (!GetOperations()->IsDone() || anObject.IsNull())
     return aGEOMObject._retn();
@@ -433,30 +493,22 @@ GEOM::GEOM_Object_ptr GEOM_IBasicOperations_i::MakePlanePntVec
 //=============================================================================
 GEOM::GEOM_Object_ptr GEOM_IBasicOperations_i::MakePlaneThreePnt
                  (GEOM::GEOM_Object_ptr thePnt1, GEOM::GEOM_Object_ptr thePnt2,
-                 GEOM::GEOM_Object_ptr thePnt3, CORBA::Double theTrimSize)
+                  GEOM::GEOM_Object_ptr thePnt3, CORBA::Double theTrimSize)
 {
   GEOM::GEOM_Object_var aGEOMObject;
 
   //Set a not done flag
   GetOperations()->SetNotDone();
 
-  if (thePnt1 == NULL || thePnt2 == NULL || thePnt3 == NULL)
-    return aGEOMObject._retn();
-
   //Get the reference points
-
-  Handle(GEOM_Object) aRef1 = GetOperations()->GetEngine()->GetObject
-    (thePnt1->GetStudyID(), thePnt1->GetEntry());
-  Handle(GEOM_Object) aRef2 = GetOperations()->GetEngine()->GetObject
-    (thePnt2->GetStudyID(), thePnt2->GetEntry());
-  Handle(GEOM_Object) aRef3 = GetOperations()->GetEngine()->GetObject
-    (thePnt3->GetStudyID(), thePnt3->GetEntry());
+  Handle(::GEOM_Object) aRef1 = GetObjectImpl(thePnt1);
+  Handle(::GEOM_Object) aRef2 = GetObjectImpl(thePnt2);
+  Handle(::GEOM_Object) aRef3 = GetObjectImpl(thePnt3);
   if (aRef1.IsNull() || aRef2.IsNull() || aRef3.IsNull())
     return aGEOMObject._retn();
 
   //Create the plane
-
-  Handle(GEOM_Object) anObject =
+  Handle(::GEOM_Object) anObject =
     GetOperations()->MakePlaneThreePnt(aRef1, aRef2, aRef3, theTrimSize);
   if (!GetOperations()->IsDone() || anObject.IsNull())
     return aGEOMObject._retn();
@@ -477,17 +529,12 @@ GEOM::GEOM_Object_ptr GEOM_IBasicOperations_i::MakePlaneFace
   //Set a not done flag
   GetOperations()->SetNotDone();
 
-  if (theFace == NULL) return aGEOMObject._retn();
-
   //Get the reference face
-
-  Handle(GEOM_Object) aRef = GetOperations()->GetEngine()->GetObject
-    (theFace->GetStudyID(), theFace->GetEntry());
+  Handle(::GEOM_Object) aRef = GetObjectImpl(theFace);
   if (aRef.IsNull()) return aGEOMObject._retn();
 
   //Create the plane
-
-  Handle(GEOM_Object) anObject =
+  Handle(::GEOM_Object) anObject =
     GetOperations()->MakePlaneFace(aRef, theTrimSize);
   if (!GetOperations()->IsDone() || anObject.IsNull())
     return aGEOMObject._retn();
@@ -495,6 +542,59 @@ GEOM::GEOM_Object_ptr GEOM_IBasicOperations_i::MakePlaneFace
   return GetObject(anObject);
 }
 
+//=============================================================================
+/*!
+ *  MakePlane2Vec
+ */
+//=============================================================================
+GEOM::GEOM_Object_ptr GEOM_IBasicOperations_i::MakePlane2Vec
+                 (GEOM::GEOM_Object_ptr theVec1, GEOM::GEOM_Object_ptr theVec2,
+                  CORBA::Double theTrimSize)
+{
+  GEOM::GEOM_Object_var aGEOMObject;
+
+  //Set a not done flag
+  GetOperations()->SetNotDone();
+
+  //Get the references
+  Handle(::GEOM_Object) aRef1 = GetObjectImpl(theVec1);
+  Handle(::GEOM_Object) aRef2 = GetObjectImpl(theVec2);
+  if (aRef1.IsNull() || aRef2.IsNull()) return aGEOMObject._retn();
+
+  //Create the plane
+  Handle(::GEOM_Object) anObject =
+    GetOperations()->MakePlane2Vec(aRef1, aRef2, theTrimSize);
+  if (!GetOperations()->IsDone() || anObject.IsNull())
+    return aGEOMObject._retn();
+
+  return GetObject(anObject);
+}
+
+//=============================================================================
+/*!
+ *  MakePlaneLCS
+ */
+//=============================================================================
+GEOM::GEOM_Object_ptr GEOM_IBasicOperations_i::MakePlaneLCS
+                 (GEOM::GEOM_Object_ptr theLCS, CORBA::Double theTrimSize,
+                 CORBA::Double theOrientation)
+{
+  GEOM::GEOM_Object_var aGEOMObject;
+
+  //Set a not done flag
+  GetOperations()->SetNotDone();
+
+  //Get the references
+  Handle(::GEOM_Object) aRef1 = GetObjectImpl(theLCS);
+
+  //Create the plane
+  Handle(::GEOM_Object) anObject =
+    GetOperations()->MakePlaneLCS(aRef1, theTrimSize, theOrientation);
+  if (!GetOperations()->IsDone() || anObject.IsNull())
+    return aGEOMObject._retn();
+
+  return GetObject(anObject);
+}
 
 //=============================================================================
 /*!
@@ -512,9 +612,65 @@ GEOM::GEOM_Object_ptr GEOM_IBasicOperations_i::MakeMarker
   GetOperations()->SetNotDone();
 
   //Create the point
-  Handle(GEOM_Object) anObject = GetOperations()->MakeMarker(theOX , theOY , theOZ,
-                                                            theXDX, theXDY, theXDZ,
-                                                            theYDX, theYDY, theYDZ);
+  Handle(::GEOM_Object) anObject = GetOperations()->MakeMarker(theOX , theOY , theOZ,
+                                                             theXDX, theXDY, theXDZ,
+                                                             theYDX, theYDY, theYDZ);
+  if (!GetOperations()->IsDone() || anObject.IsNull())
+    return aGEOMObject._retn();
+
+  return GetObject(anObject);
+}
+
+//=============================================================================
+/*!
+ *  MakeMarkerFromShape
+ */
+//=============================================================================
+GEOM::GEOM_Object_ptr GEOM_IBasicOperations_i::MakeMarkerFromShape
+                                              (GEOM::GEOM_Object_ptr theShape)
+{
+  GEOM::GEOM_Object_var aGEOMObject;
+
+  //Set a not done flag
+  GetOperations()->SetNotDone();
+
+  //Get the referenced object
+  Handle(::GEOM_Object) aRef = GetObjectImpl(theShape);
+  if (aRef.IsNull()) return aGEOMObject._retn();
+
+  //Create the point
+  Handle(::GEOM_Object) anObject = GetOperations()->MakeMarkerFromShape(aRef);
+  if (!GetOperations()->IsDone() || anObject.IsNull())
+    return aGEOMObject._retn();
+
+  return GetObject(anObject);
+}
+
+//=============================================================================
+/*!
+ *  MakeMarkerPntTwoVec
+ */
+//=============================================================================
+GEOM::GEOM_Object_ptr GEOM_IBasicOperations_i::MakeMarkerPntTwoVec
+                                              (GEOM::GEOM_Object_ptr theOrigin,
+                                               GEOM::GEOM_Object_ptr theXVec,
+                                               GEOM::GEOM_Object_ptr theYVec)
+{
+  GEOM::GEOM_Object_var aGEOMObject;
+
+  //Set a not done flag
+  GetOperations()->SetNotDone();
+
+  //Get the referenced objects
+  Handle(::GEOM_Object) aRef1 = GetObjectImpl(theOrigin);
+  Handle(::GEOM_Object) aRef2 = GetObjectImpl(theXVec);
+  Handle(::GEOM_Object) aRef3 = GetObjectImpl(theYVec);
+  if (aRef1.IsNull() || aRef2.IsNull() || aRef3.IsNull()) return aGEOMObject._retn();
+
+  //Create the point
+  Handle(::GEOM_Object) anObject = GetOperations()->MakeMarkerPntTwoVec(aRef1,
+                                                                      aRef2,
+                                                                     aRef3);
   if (!GetOperations()->IsDone() || anObject.IsNull())
     return aGEOMObject._retn();
 
@@ -528,31 +684,25 @@ GEOM::GEOM_Object_ptr GEOM_IBasicOperations_i::MakeMarker
 //=============================================================================
 
 GEOM::GEOM_Object_ptr GEOM_IBasicOperations_i::MakeTangentPlaneOnFace
-                     (GEOM::GEOM_Object_ptr theFace, 
-                     CORBA::Double theParameterU,
-                     CORBA::Double theParameterV,
-                     CORBA::Double theTrimSize)
+                     (GEOM::GEOM_Object_ptr theFace,
+                      CORBA::Double theParameterU,
+                      CORBA::Double theParameterV,
+                      CORBA::Double theTrimSize)
 {
   GEOM::GEOM_Object_var aGEOMObject;
 
   //Set a not done flag
   GetOperations()->SetNotDone();
 
-  if (theFace == NULL) return aGEOMObject._retn();
-
   //Get the reference face
-
-  Handle(GEOM_Object) aRef = GetOperations()->GetEngine()->GetObject
-    (theFace->GetStudyID(), theFace->GetEntry());
+  Handle(::GEOM_Object) aRef = GetObjectImpl(theFace);
   if (aRef.IsNull()) return aGEOMObject._retn();
 
   //Create the plane
-
-  Handle(GEOM_Object) anObject =
+  Handle(::GEOM_Object) anObject =
     GetOperations()->MakeTangentPlaneOnFace(aRef, theParameterU,theParameterV,theTrimSize);
   if (!GetOperations()->IsDone() || anObject.IsNull())
     return aGEOMObject._retn();
 
   return GetObject(anObject);
 }
-