]> SALOME platform Git repositories - modules/geom.git/commitdiff
Salome HOME
Bug 0020230: Memory performance improvement.
authorjfa <jfa@opencascade.com>
Tue, 14 Apr 2009 13:46:05 +0000 (13:46 +0000)
committerjfa <jfa@opencascade.com>
Tue, 14 Apr 2009 13:46:05 +0000 (13:46 +0000)
15 files changed:
src/GEOM_I/GEOM_Gen_i.cc
src/GEOM_I/GEOM_I3DPrimOperations_i.cc
src/GEOM_I/GEOM_IBasicOperations_i.cc
src/GEOM_I/GEOM_IBlocksOperations_i.cc
src/GEOM_I/GEOM_IBooleanOperations_i.cc
src/GEOM_I/GEOM_ICurvesOperations_i.cc
src/GEOM_I/GEOM_IGroupOperations_i.cc
src/GEOM_I/GEOM_IHealingOperations_i.cc
src/GEOM_I/GEOM_IInsertOperations_i.cc
src/GEOM_I/GEOM_ILocalOperations_i.cc
src/GEOM_I/GEOM_IMeasureOperations_i.cc
src/GEOM_I/GEOM_IOperations_i.cc
src/GEOM_I/GEOM_IOperations_i.hh
src/GEOM_I/GEOM_IShapesOperations_i.cc
src/GEOM_I/GEOM_ITransformOperations_i.cc

index d56822b0db6aa7c2a14675de76bec526ce23e883..8a4a5681abcf83e4e8e42b1888bb173833f637a3 100644 (file)
@@ -18,7 +18,7 @@
 //  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
 //
 //  See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
-//
+
 #ifdef WNT
 #pragma warning( disable:4786 )
 #endif
@@ -1230,8 +1230,10 @@ GEOM::GEOM_IGroupOperations_ptr GEOM_Gen_i::GetIGroupOperations(CORBA::Long theS
 GEOM::GEOM_Object_ptr GEOM_Gen_i::AddSubShape (GEOM::GEOM_Object_ptr theMainShape,
                                               const GEOM::ListOfLong& theIndices)
 {
-  if(theMainShape == NULL || theIndices.length() < 1) return GEOM::GEOM_Object::_nil();
-  Handle(GEOM_Object) aMainsShape = _impl->GetObject(theMainShape->GetStudyID(), theMainShape->GetEntry());
+  if (CORBA::is_nil(theMainShape) || theIndices.length() < 1)
+    return GEOM::GEOM_Object::_nil();
+  CORBA::String_var entry = theMainShape->GetEntry();
+  Handle(GEOM_Object) aMainsShape = _impl->GetObject(theMainShape->GetStudyID(), entry);
   if (aMainsShape.IsNull()) return GEOM::GEOM_Object::_nil();
 
   Handle(TColStd_HArray1OfInteger) anArray = new TColStd_HArray1OfInteger(1, theIndices.length());
@@ -1291,7 +1293,7 @@ GEOM::GEOM_Object_ptr GEOM_Gen_i::GetObject (CORBA::Long theStudyID, const char*
 {
   GEOM::GEOM_Object_var obj;
   Handle(GEOM_Object) handle_object = _impl->GetObject(theStudyID, (char*)theEntry);
-  if (handle_object.IsNull()) return NULL;
+  if (handle_object.IsNull()) return obj._retn();
 
   TCollection_AsciiString stringIOR = handle_object->GetIOR();
   if (stringIOR.Length() > 1) {
index f3ab5ceef72f1eca64e85a83a1fe6cff10aa2748..47e5f396d4476ba83deb5d589a85cccd65e2a8a2 100644 (file)
@@ -18,7 +18,7 @@
 //  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
 //
 //  See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
-//
+
 #include <Standard_Stream.hxx>
 
 #include "GEOM_I3DPrimOperations_i.hh"
@@ -58,19 +58,19 @@ GEOM_I3DPrimOperations_i::~GEOM_I3DPrimOperations_i()
  */
 //=============================================================================
 GEOM::GEOM_Object_ptr GEOM_I3DPrimOperations_i::MakeBoxDXDYDZ (CORBA::Double theDX,
-                                                              CORBA::Double theDY,
-                                                              CORBA::Double theDZ)
+                                                               CORBA::Double theDY,
+                                                               CORBA::Double theDZ)
 {
   GEOM::GEOM_Object_var aGEOMObject;
 
   //Set a not done flag
   GetOperations()->SetNotDone();
-   
+
   //Create the Box
   Handle(GEOM_Object) anObject = GetOperations()->MakeBoxDXDYDZ(theDX, theDY, theDZ);
   if (!GetOperations()->IsDone() || anObject.IsNull())
     return aGEOMObject._retn();
+
   return GetObject(anObject);
 }
 
@@ -87,13 +87,8 @@ GEOM::GEOM_Object_ptr GEOM_I3DPrimOperations_i::MakeBoxTwoPnt
   //Set a not done flag
   GetOperations()->SetNotDone();
 
-  if (thePnt1 == NULL || thePnt2 == NULL) return aGEOMObject._retn();
-
-  //Get the reference points
-  Handle(GEOM_Object) aPnt1 = GetOperations()->GetEngine()->GetObject
-    (thePnt1->GetStudyID(), thePnt1->GetEntry());
-  Handle(GEOM_Object) aPnt2 = GetOperations()->GetEngine()->GetObject
-    (thePnt2->GetStudyID(), thePnt2->GetEntry());
+  Handle(GEOM_Object) aPnt1 = GetObjectImpl(thePnt1);
+  Handle(GEOM_Object) aPnt2 = GetObjectImpl(thePnt2);
 
   if (aPnt1.IsNull() || aPnt2.IsNull()) return aGEOMObject._retn();
 
@@ -111,7 +106,7 @@ GEOM::GEOM_Object_ptr GEOM_I3DPrimOperations_i::MakeBoxTwoPnt
  */
 //=============================================================================
 GEOM::GEOM_Object_ptr GEOM_I3DPrimOperations_i::MakeCylinderRH (CORBA::Double theR,
-                                                               CORBA::Double theH)
+                                                                CORBA::Double theH)
 {
   GEOM::GEOM_Object_var aGEOMObject;
 
@@ -133,20 +128,16 @@ GEOM::GEOM_Object_ptr GEOM_I3DPrimOperations_i::MakeCylinderRH (CORBA::Double th
 //=============================================================================
 GEOM::GEOM_Object_ptr GEOM_I3DPrimOperations_i::MakeCylinderPntVecRH
                       (GEOM::GEOM_Object_ptr thePnt, GEOM::GEOM_Object_ptr theVec,
-                      CORBA::Double theR, CORBA::Double theH)
+                       CORBA::Double theR, CORBA::Double theH)
 {
   GEOM::GEOM_Object_var aGEOMObject;
 
   //Set a not done flag
   GetOperations()->SetNotDone();
 
-  if (thePnt == NULL || theVec == NULL) return aGEOMObject._retn();
-
   //Get the reference points
-  Handle(GEOM_Object) aPnt = GetOperations()->GetEngine()->GetObject
-    (thePnt->GetStudyID(), thePnt->GetEntry());
-  Handle(GEOM_Object) aVec = GetOperations()->GetEngine()->GetObject
-    (theVec->GetStudyID(), theVec->GetEntry());
+  Handle(GEOM_Object) aPnt = GetObjectImpl(thePnt);
+  Handle(GEOM_Object) aVec = GetObjectImpl(theVec);
 
   if (aPnt.IsNull() || aVec.IsNull()) return aGEOMObject._retn();
 
@@ -164,8 +155,8 @@ GEOM::GEOM_Object_ptr GEOM_I3DPrimOperations_i::MakeCylinderPntVecRH
  */
 //=============================================================================
 GEOM::GEOM_Object_ptr GEOM_I3DPrimOperations_i::MakeConeR1R2H (CORBA::Double theR1,
-                                                              CORBA::Double theR2,
-                                                              CORBA::Double theH)
+                                                               CORBA::Double theR2,
+                                                               CORBA::Double theH)
 {
   GEOM::GEOM_Object_var aGEOMObject;
 
@@ -187,20 +178,16 @@ GEOM::GEOM_Object_ptr GEOM_I3DPrimOperations_i::MakeConeR1R2H (CORBA::Double the
 //=============================================================================
 GEOM::GEOM_Object_ptr GEOM_I3DPrimOperations_i::MakeConePntVecR1R2H
                       (GEOM::GEOM_Object_ptr thePnt, GEOM::GEOM_Object_ptr theVec,
-                      CORBA::Double theR1, CORBA::Double theR2, CORBA::Double theH)
+                       CORBA::Double theR1, CORBA::Double theR2, CORBA::Double theH)
 {
   GEOM::GEOM_Object_var aGEOMObject;
 
   //Set a not done flag
   GetOperations()->SetNotDone();
 
-  if (thePnt == NULL || theVec == NULL) return aGEOMObject._retn();
-
   //Get the reference points
-  Handle(GEOM_Object) aPnt = GetOperations()->GetEngine()->GetObject
-    (thePnt->GetStudyID(), thePnt->GetEntry());
-  Handle(GEOM_Object) aVec = GetOperations()->GetEngine()->GetObject
-    (theVec->GetStudyID(), theVec->GetEntry());
+  Handle(GEOM_Object) aPnt = GetObjectImpl(thePnt);
+  Handle(GEOM_Object) aVec = GetObjectImpl(theVec);
 
   if (aPnt.IsNull() || aVec.IsNull()) return aGEOMObject._retn();
 
@@ -246,18 +233,14 @@ GEOM::GEOM_Object_ptr GEOM_I3DPrimOperations_i::MakeSpherePntR
   //Set a not done flag
   GetOperations()->SetNotDone();
 
-  if (thePnt == NULL) return aGEOMObject._retn();
-
   //Get the reference point
-  CORBA::String_var entry=thePnt->GetEntry();
-  Handle(GEOM_Object) aPnt = GetOperations()->GetEngine()->GetObject
-    (thePnt->GetStudyID(), entry);
+  Handle(GEOM_Object) aPnt = GetObjectImpl(thePnt);
 
   if (aPnt.IsNull()) return aGEOMObject._retn();
 
   //Create the Sphere
   Handle(GEOM_Object) anObject =
-      GetOperations()->MakeSpherePntR(aPnt, theR);
+    GetOperations()->MakeSpherePntR(aPnt, theR);
   if (!GetOperations()->IsDone() || anObject.IsNull())
     return aGEOMObject._retn();
 
@@ -293,20 +276,16 @@ GEOM::GEOM_Object_ptr GEOM_I3DPrimOperations_i::MakeTorusRR
 //=============================================================================
 GEOM::GEOM_Object_ptr GEOM_I3DPrimOperations_i::MakeTorusPntVecRR
                       (GEOM::GEOM_Object_ptr thePnt, GEOM::GEOM_Object_ptr theVec,
-                      CORBA::Double theRMajor, CORBA::Double theRMinor)
+                       CORBA::Double theRMajor, CORBA::Double theRMinor)
 {
   GEOM::GEOM_Object_var aGEOMObject;
 
   //Set a not done flag
   GetOperations()->SetNotDone();
 
-  if (thePnt == NULL || theVec == NULL) return aGEOMObject._retn();
-
   //Get the reference points
-  Handle(GEOM_Object) aPnt = GetOperations()->GetEngine()->GetObject
-    (thePnt->GetStudyID(), thePnt->GetEntry());
-  Handle(GEOM_Object) aVec = GetOperations()->GetEngine()->GetObject
-    (theVec->GetStudyID(), theVec->GetEntry());
+  Handle(GEOM_Object) aPnt = GetObjectImpl(thePnt);
+  Handle(GEOM_Object) aVec = GetObjectImpl(theVec);
 
   if (aPnt.IsNull() || aVec.IsNull()) return aGEOMObject._retn();
 
@@ -326,20 +305,16 @@ GEOM::GEOM_Object_ptr GEOM_I3DPrimOperations_i::MakeTorusPntVecRR
 //=============================================================================
 GEOM::GEOM_Object_ptr GEOM_I3DPrimOperations_i::MakePrismVecH
                       (GEOM::GEOM_Object_ptr theBase, GEOM::GEOM_Object_ptr theVec,
-                      CORBA::Double theH)
+                       CORBA::Double theH)
 {
   GEOM::GEOM_Object_var aGEOMObject;
 
   //Set a not done flag
   GetOperations()->SetNotDone();
 
-  if (theBase == NULL || theVec == NULL) return aGEOMObject._retn();
-
   //Get the reference objects
-  Handle(GEOM_Object) aBase = GetOperations()->GetEngine()->GetObject
-    (theBase->GetStudyID(), theBase->GetEntry());
-  Handle(GEOM_Object) aVec = GetOperations()->GetEngine()->GetObject
-    (theVec->GetStudyID(), theVec->GetEntry());
+  Handle(GEOM_Object) aBase = GetObjectImpl(theBase);
+  Handle(GEOM_Object) aVec = GetObjectImpl(theVec);
 
   if (aBase.IsNull() || aVec.IsNull()) return aGEOMObject._retn();
 
@@ -359,20 +334,16 @@ GEOM::GEOM_Object_ptr GEOM_I3DPrimOperations_i::MakePrismVecH
 //=============================================================================
 GEOM::GEOM_Object_ptr GEOM_I3DPrimOperations_i::MakePrismVecH2Ways
                       (GEOM::GEOM_Object_ptr theBase, GEOM::GEOM_Object_ptr theVec,
-                      CORBA::Double theH)
+                       CORBA::Double theH)
 {
   GEOM::GEOM_Object_var aGEOMObject;
 
   //Set a not done flag
   GetOperations()->SetNotDone();
 
-  if (theBase == NULL || theVec == NULL) return aGEOMObject._retn();
-
   //Get the reference objects
-  Handle(GEOM_Object) aBase = GetOperations()->GetEngine()->GetObject
-    (theBase->GetStudyID(), theBase->GetEntry());
-  Handle(GEOM_Object) aVec = GetOperations()->GetEngine()->GetObject
-    (theVec->GetStudyID(), theVec->GetEntry());
+  Handle(GEOM_Object) aBase = GetObjectImpl(theBase);
+  Handle(GEOM_Object) aVec = GetObjectImpl(theVec);
 
   if (aBase.IsNull() || aVec.IsNull()) return aGEOMObject._retn();
 
@@ -392,24 +363,18 @@ GEOM::GEOM_Object_ptr GEOM_I3DPrimOperations_i::MakePrismVecH2Ways
 //=============================================================================
 GEOM::GEOM_Object_ptr GEOM_I3DPrimOperations_i::MakePrismTwoPnt
                                              (GEOM::GEOM_Object_ptr theBase,
-                                             GEOM::GEOM_Object_ptr thePoint1,
-                                             GEOM::GEOM_Object_ptr thePoint2)
+                                              GEOM::GEOM_Object_ptr thePoint1,
+                                              GEOM::GEOM_Object_ptr thePoint2)
 {
   GEOM::GEOM_Object_var aGEOMObject;
 
   //Set a not done flag
   GetOperations()->SetNotDone();
 
-  if (theBase == NULL || thePoint1 == NULL || thePoint2 == NULL)
-    return aGEOMObject._retn();
-
   //Get the reference objects
-  Handle(GEOM_Object) aBase = GetOperations()->GetEngine()->GetObject
-    (theBase->GetStudyID(), theBase->GetEntry());
-  Handle(GEOM_Object) aPoint1 = GetOperations()->GetEngine()->GetObject
-    (thePoint1->GetStudyID(), thePoint1->GetEntry());
-  Handle(GEOM_Object) aPoint2 = GetOperations()->GetEngine()->GetObject
-    (thePoint2->GetStudyID(), thePoint2->GetEntry());
+  Handle(GEOM_Object) aBase = GetObjectImpl(theBase);
+  Handle(GEOM_Object) aPoint1 = GetObjectImpl(thePoint1);
+  Handle(GEOM_Object) aPoint2 = GetObjectImpl(thePoint2);
 
   if (aBase.IsNull() || aPoint1.IsNull() || aPoint2.IsNull())
     return aGEOMObject._retn();
@@ -430,24 +395,18 @@ GEOM::GEOM_Object_ptr GEOM_I3DPrimOperations_i::MakePrismTwoPnt
 //=============================================================================
 GEOM::GEOM_Object_ptr GEOM_I3DPrimOperations_i::MakePrismTwoPnt2Ways
                                              (GEOM::GEOM_Object_ptr theBase,
-                                             GEOM::GEOM_Object_ptr thePoint1,
-                                             GEOM::GEOM_Object_ptr thePoint2)
+                                              GEOM::GEOM_Object_ptr thePoint1,
+                                              GEOM::GEOM_Object_ptr thePoint2)
 {
   GEOM::GEOM_Object_var aGEOMObject;
 
   //Set a not done flag
   GetOperations()->SetNotDone();
 
-  if (theBase == NULL || thePoint1 == NULL || thePoint2 == NULL)
-    return aGEOMObject._retn();
-
   //Get the reference objects
-  Handle(GEOM_Object) aBase = GetOperations()->GetEngine()->GetObject
-    (theBase->GetStudyID(), theBase->GetEntry());
-  Handle(GEOM_Object) aPoint1 = GetOperations()->GetEngine()->GetObject
-    (thePoint1->GetStudyID(), thePoint1->GetEntry());
-  Handle(GEOM_Object) aPoint2 = GetOperations()->GetEngine()->GetObject
-    (thePoint2->GetStudyID(), thePoint2->GetEntry());
+  Handle(GEOM_Object) aBase = GetObjectImpl(theBase);
+  Handle(GEOM_Object) aPoint1 = GetObjectImpl(thePoint1);
+  Handle(GEOM_Object) aPoint2 = GetObjectImpl(thePoint2);
 
   if (aBase.IsNull() || aPoint1.IsNull() || aPoint2.IsNull())
     return aGEOMObject._retn();
@@ -474,13 +433,9 @@ GEOM::GEOM_Object_ptr GEOM_I3DPrimOperations_i::MakePipe
   //Set a not done flag
   GetOperations()->SetNotDone();
 
-  if (theBase == NULL || thePath == NULL) return aGEOMObject._retn();
-
   //Get the reference objects
-  Handle(GEOM_Object) aBase = GetOperations()->GetEngine()->GetObject
-    (theBase->GetStudyID(), theBase->GetEntry());
-  Handle(GEOM_Object) aPath = GetOperations()->GetEngine()->GetObject
-    (thePath->GetStudyID(), thePath->GetEntry());
+  Handle(GEOM_Object) aBase = GetObjectImpl(theBase);
+  Handle(GEOM_Object) aPath = GetObjectImpl(thePath);
 
   if (aBase.IsNull() || aPath.IsNull()) return aGEOMObject._retn();
 
@@ -500,20 +455,16 @@ GEOM::GEOM_Object_ptr GEOM_I3DPrimOperations_i::MakePipe
 //=============================================================================
 GEOM::GEOM_Object_ptr GEOM_I3DPrimOperations_i::MakeRevolutionAxisAngle
                       (GEOM::GEOM_Object_ptr theBase, GEOM::GEOM_Object_ptr theAxis,
-                      CORBA::Double theAngle)
+                       CORBA::Double theAngle)
 {
   GEOM::GEOM_Object_var aGEOMObject;
 
   //Set a not done flag
   GetOperations()->SetNotDone();
 
-  if (theBase == NULL || theAxis == NULL) return aGEOMObject._retn();
-
   //Get the reference objects
-  Handle(GEOM_Object) aBase = GetOperations()->GetEngine()->GetObject
-    (theBase->GetStudyID(), theBase->GetEntry());
-  Handle(GEOM_Object) anAxis = GetOperations()->GetEngine()->GetObject
-    (theAxis->GetStudyID(), theAxis->GetEntry());
+  Handle(GEOM_Object) aBase = GetObjectImpl(theBase);
+  Handle(GEOM_Object) anAxis = GetObjectImpl(theAxis);
 
   if (aBase.IsNull() || anAxis.IsNull()) return aGEOMObject._retn();
 
@@ -533,20 +484,16 @@ GEOM::GEOM_Object_ptr GEOM_I3DPrimOperations_i::MakeRevolutionAxisAngle
 //=============================================================================
 GEOM::GEOM_Object_ptr GEOM_I3DPrimOperations_i::MakeRevolutionAxisAngle2Ways
                       (GEOM::GEOM_Object_ptr theBase, GEOM::GEOM_Object_ptr theAxis,
-                      CORBA::Double theAngle)
+                       CORBA::Double theAngle)
 {
   GEOM::GEOM_Object_var aGEOMObject;
 
   //Set a not done flag
   GetOperations()->SetNotDone();
 
-  if (theBase == NULL || theAxis == NULL) return aGEOMObject._retn();
-
   //Get the reference objects
-  Handle(GEOM_Object) aBase = GetOperations()->GetEngine()->GetObject
-    (theBase->GetStudyID(), theBase->GetEntry());
-  Handle(GEOM_Object) anAxis = GetOperations()->GetEngine()->GetObject
-    (theAxis->GetStudyID(), theAxis->GetEntry());
+  Handle(GEOM_Object) aBase = GetObjectImpl(theBase);
+  Handle(GEOM_Object) anAxis = GetObjectImpl(theAxis);
 
   if (aBase.IsNull() || anAxis.IsNull()) return aGEOMObject._retn();
 
@@ -565,28 +512,26 @@ GEOM::GEOM_Object_ptr GEOM_I3DPrimOperations_i::MakeRevolutionAxisAngle2Ways
  */
 //=============================================================================
 GEOM::GEOM_Object_ptr GEOM_I3DPrimOperations_i::MakeFilling(GEOM::GEOM_Object_ptr theShape,
-                                                           CORBA::Long theMinDeg,
-                                                           CORBA::Long theMaxDeg,
-                                                           CORBA::Double theTol2D,
-                                                           CORBA::Double theTol3D,
-                                                           CORBA::Long theNbIter,
-                                                           CORBA::Boolean theApprox)
+                                                            CORBA::Long theMinDeg,
+                                                            CORBA::Long theMaxDeg,
+                                                            CORBA::Double theTol2D,
+                                                            CORBA::Double theTol3D,
+                                                            CORBA::Long theNbIter,
+                                                            CORBA::Boolean theApprox)
 {
   GEOM::GEOM_Object_var aGEOMObject;
 
   //Set a not done flag
   GetOperations()->SetNotDone();
 
-  if (theShape == NULL) return aGEOMObject._retn();
-
   //Get the reference objects
-  Handle(GEOM_Object) aShape = GetOperations()->GetEngine()->GetObject
-    (theShape->GetStudyID(), theShape->GetEntry());
+  Handle(GEOM_Object) aShape = GetObjectImpl(theShape);
 
   if (aShape.IsNull()) return aGEOMObject._retn();
 
   //Create the Solid
-  Handle(GEOM_Object) anObject = GetOperations()->MakeFilling(aShape, theMinDeg, theMaxDeg, theTol2D, theTol3D, theNbIter, theApprox);
+  Handle(GEOM_Object) anObject = GetOperations()->MakeFilling
+    (aShape, theMinDeg, theMaxDeg, theTol2D, theTol3D, theNbIter, theApprox);
   if (!GetOperations()->IsDone() || anObject.IsNull())
     return aGEOMObject._retn();
 
@@ -599,9 +544,9 @@ GEOM::GEOM_Object_ptr GEOM_I3DPrimOperations_i::MakeFilling(GEOM::GEOM_Object_pt
  */
 //=============================================================================
 GEOM::GEOM_Object_ptr GEOM_I3DPrimOperations_i::MakeThruSections(const GEOM::ListOfGO& theSeqSections,
-                                                                CORBA::Boolean theModeSolid,
-                                                                CORBA::Double thePreci,
-                                                                CORBA::Boolean theRuled)
+                                                                 CORBA::Boolean theModeSolid,
+                                                                 CORBA::Double thePreci,
+                                                                 CORBA::Boolean theRuled)
 {
    GEOM::GEOM_Object_var aGEOMObject;
 
@@ -613,13 +558,11 @@ GEOM::GEOM_Object_ptr GEOM_I3DPrimOperations_i::MakeThruSections(const GEOM::Lis
   //Get the shapes
   aLen = theSeqSections.length();
   for (ind = 0; ind < aLen; ind++) {
-    if (theSeqSections[ind] == NULL) continue;
-    Handle(GEOM_Object) aSh = GetOperations()->GetEngine()->GetObject
-      (theSeqSections[ind]->GetStudyID(), theSeqSections[ind]->GetEntry());
+    Handle(GEOM_Object) aSh = GetObjectImpl(theSeqSections[ind]);
     if (!aSh.IsNull())
       aSeqSections->Append(aSh);
   }
-  if(!aSeqSections->Length())
+  if (!aSeqSections->Length())
     return aGEOMObject._retn();
 
   // Make shell or solid
@@ -636,55 +579,52 @@ GEOM::GEOM_Object_ptr GEOM_I3DPrimOperations_i::MakeThruSections(const GEOM::Lis
  *  MakePipeWithDifferentSections
  */
 //=============================================================================
-GEOM::GEOM_Object_ptr GEOM_I3DPrimOperations_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_I3DPrimOperations_i::MakePipeWithDifferentSections
+                      (const GEOM::ListOfGO& theBases,
+                       const GEOM::ListOfGO& theLocations,
+                       GEOM::GEOM_Object_ptr thePath,
+                       CORBA::Boolean theWithContact,
+                       CORBA::Boolean theWithCorrections)
 {
-   GEOM::GEOM_Object_var aGEOMObject;
+  GEOM::GEOM_Object_var aGEOMObject;
 
   //Set a not done flag
   GetOperations()->SetNotDone();
   Handle(TColStd_HSequenceOfTransient) aSeqBases = new TColStd_HSequenceOfTransient;
   Handle(TColStd_HSequenceOfTransient) aSeqLocations = new TColStd_HSequenceOfTransient;
   int ind=0, aNbBases =0,aNbLocs=0;
-  
+
   //Get the shapes
   aNbBases = theBases.length();
   aNbLocs = theLocations.length();
 
-  if( aNbLocs &&  aNbBases != aNbLocs)
+  if (aNbLocs && aNbBases != aNbLocs)
+    return aGEOMObject._retn();
+
+  Handle(GEOM_Object) aPath = GetObjectImpl(thePath);
+  if (aPath.IsNull())
     return aGEOMObject._retn();
-  
-   Handle(GEOM_Object) aPath = GetOperations()->GetEngine()->GetObject
-      (thePath->GetStudyID(), thePath->GetEntry());
-   if(aPath.IsNull())
-     return aGEOMObject._retn();
 
   for (ind = 0; ind < aNbBases; ind++) {
-    if (theBases[ind] == NULL) continue;
-    Handle(GEOM_Object) aBase = GetOperations()->GetEngine()->GetObject(theBases[ind]->GetStudyID(), 
-                       theBases[ind]->GetEntry());
-    if(aBase.IsNull())
+    Handle(GEOM_Object) aBase = GetObjectImpl(theBases[ind]);
+    if (aBase.IsNull())
       continue;
-    if(aNbLocs)
+    if (aNbLocs)
     {
-      Handle(GEOM_Object) aLoc = GetOperations()->GetEngine()->GetObject
-       (theLocations[ind]->GetStudyID(), theLocations[ind]->GetEntry());
-      if(aLoc.IsNull())
-       continue;
+      Handle(GEOM_Object) aLoc = GetObjectImpl(theLocations[ind]);
+      if (aLoc.IsNull())
+        continue;
       aSeqLocations->Append(aLoc);
     }
     aSeqBases->Append(aBase);
   }
-  if(!aSeqBases->Length())
+  if (!aSeqBases->Length())
     return aGEOMObject._retn();
 
   // Make pipe
   Handle(GEOM_Object) anObject =
     GetOperations()->MakePipeWithDifferentSections(aSeqBases,aSeqLocations ,aPath,
-                                                  theWithContact,theWithCorrections);
+                                                   theWithContact,theWithCorrections);
   if (!GetOperations()->IsDone() || anObject.IsNull())
     return aGEOMObject._retn();
 
@@ -699,11 +639,11 @@ GEOM::GEOM_Object_ptr GEOM_I3DPrimOperations_i::MakePipeWithDifferentSections(co
 //=============================================================================
 GEOM::GEOM_Object_ptr GEOM_I3DPrimOperations_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)
+                  const GEOM::ListOfGO& theSubBases,
+                  const GEOM::ListOfGO& theLocations,
+                  GEOM::GEOM_Object_ptr thePath,
+                  CORBA::Boolean theWithContact,
+                  CORBA::Boolean theWithCorrections)
 {
   GEOM::GEOM_Object_var aGEOMObject;
 
@@ -713,55 +653,49 @@ GEOM::GEOM_Object_ptr GEOM_I3DPrimOperations_i::MakePipeWithShellSections
   Handle(TColStd_HSequenceOfTransient) aSeqSubBases = new TColStd_HSequenceOfTransient;
   Handle(TColStd_HSequenceOfTransient) aSeqLocations = new TColStd_HSequenceOfTransient;
   int ind=0, aNbBases=0, aNbSubBases=0, aNbLocs=0;
-  
+
   //Get the shapes
   aNbBases = theBases.length();
   aNbSubBases = theSubBases.length();
   aNbLocs = theLocations.length();
 
-  if( aNbLocs &&  aNbBases != aNbLocs)
+  if (aNbLocs && aNbBases != aNbLocs)
+    return aGEOMObject._retn();
+
+  Handle(GEOM_Object) aPath = GetObjectImpl(thePath);
+  if (aPath.IsNull())
     return aGEOMObject._retn();
-  
-   Handle(GEOM_Object) aPath = GetOperations()->GetEngine()->GetObject
-      (thePath->GetStudyID(), thePath->GetEntry());
-   if(aPath.IsNull())
-     return aGEOMObject._retn();
 
   for (ind = 0; ind < aNbBases; ind++) {
-    if (theBases[ind] == NULL) continue;
-    Handle(GEOM_Object) aBase = GetOperations()->GetEngine()->
-      GetObject(theBases[ind]->GetStudyID(), theBases[ind]->GetEntry());
-    if(aBase.IsNull())
+    Handle(GEOM_Object) aBase = GetObjectImpl(theBases[ind]);
+    if (aBase.IsNull())
       continue;
-    if(aNbLocs) {
-      Handle(GEOM_Object) aLoc = GetOperations()->GetEngine()->GetObject
-       (theLocations[ind]->GetStudyID(), theLocations[ind]->GetEntry());
-      if(aLoc.IsNull())
-       continue;
+    if (aNbLocs) {
+      Handle(GEOM_Object) aLoc = GetObjectImpl(theLocations[ind]);
+      if (aLoc.IsNull())
+        continue;
       aSeqLocations->Append(aLoc);
     }
     aSeqBases->Append(aBase);
 
-    if(aNbSubBases>=aNbBases) {
-      Handle(GEOM_Object) aSubBase = GetOperations()->GetEngine()->
-       GetObject(theSubBases[ind]->GetStudyID(), theSubBases[ind]->GetEntry());
-      if(aSubBase.IsNull()) {
-       aSeqSubBases->Clear();
-       aNbSubBases = 0;
-       continue;
+    if (aNbSubBases >= aNbBases) {
+      Handle(GEOM_Object) aSubBase = GetObjectImpl(theSubBases[ind]);
+      if (aSubBase.IsNull()) {
+        aSeqSubBases->Clear();
+        aNbSubBases = 0;
+        continue;
       }
       aSeqSubBases->Append(aSubBase);
     }
-
   }
-  if(!aSeqBases->Length())
+  if (!aSeqBases->Length())
     return aGEOMObject._retn();
 
   // Make pipe
   Handle(GEOM_Object) anObject =
     GetOperations()->MakePipeWithShellSections(aSeqBases, aSeqSubBases,
-                                              aSeqLocations, aPath,
-                                              theWithContact, theWithCorrections);
+                                               aSeqLocations, aPath,
+                                               theWithContact, theWithCorrections);
   if (!GetOperations()->IsDone() || anObject.IsNull())
     return aGEOMObject._retn();
 
@@ -776,7 +710,7 @@ GEOM::GEOM_Object_ptr GEOM_I3DPrimOperations_i::MakePipeWithShellSections
 //=============================================================================
 GEOM::GEOM_Object_ptr GEOM_I3DPrimOperations_i::MakePipeShellsWithoutPath
                  (const GEOM::ListOfGO& theBases,
-                 const GEOM::ListOfGO& theLocations)
+                  const GEOM::ListOfGO& theLocations)
 {
   GEOM::GEOM_Object_var aGEOMObject;
 
@@ -785,31 +719,28 @@ GEOM::GEOM_Object_ptr GEOM_I3DPrimOperations_i::MakePipeShellsWithoutPath
   Handle(TColStd_HSequenceOfTransient) aSeqBases = new TColStd_HSequenceOfTransient;
   Handle(TColStd_HSequenceOfTransient) aSeqLocations = new TColStd_HSequenceOfTransient;
   int ind=0, aNbBases=0, aNbLocs=0;
-  
+
   //Get the shapes
   aNbBases = theBases.length();
   aNbLocs = theLocations.length();
 
-  if( aNbLocs &&  aNbBases != aNbLocs)
+  if (aNbLocs && aNbBases != aNbLocs)
     return aGEOMObject._retn();
-  
+
   for (ind = 0; ind < aNbBases; ind++) {
-    if (theBases[ind] == NULL) continue;
-    Handle(GEOM_Object) aBase = GetOperations()->GetEngine()->
-      GetObject(theBases[ind]->GetStudyID(), theBases[ind]->GetEntry());
-    if(aBase.IsNull())
+    Handle(GEOM_Object) aBase = GetObjectImpl(theBases[ind]);
+    if (aBase.IsNull())
       continue;
-    if(aNbLocs) {
-      Handle(GEOM_Object) aLoc = GetOperations()->GetEngine()->GetObject
-       (theLocations[ind]->GetStudyID(), theLocations[ind]->GetEntry());
-      if(aLoc.IsNull())
-       continue;
+    if (aNbLocs) {
+      Handle(GEOM_Object) aLoc = GetObjectImpl(theLocations[ind]);
+      if (aLoc.IsNull())
+        continue;
       aSeqLocations->Append(aLoc);
     }
     aSeqBases->Append(aBase);
   }
 
-  if(!aSeqBases->Length())
+  if (!aSeqBases->Length())
     return aGEOMObject._retn();
 
   // Make pipe
@@ -829,24 +760,19 @@ GEOM::GEOM_Object_ptr GEOM_I3DPrimOperations_i::MakePipeShellsWithoutPath
  */
 //=============================================================================
 GEOM::GEOM_Object_ptr GEOM_I3DPrimOperations_i::MakePipeBiNormalAlongVector
-                 (GEOM::GEOM_Object_ptr theBase, 
-                 GEOM::GEOM_Object_ptr thePath, 
-                 GEOM::GEOM_Object_ptr theVec)
+                 (GEOM::GEOM_Object_ptr theBase,
+                  GEOM::GEOM_Object_ptr thePath,
+                  GEOM::GEOM_Object_ptr theVec)
 {
   GEOM::GEOM_Object_var aGEOMObject;
 
   //Set a not done flag
   GetOperations()->SetNotDone();
 
-  if (theBase == NULL || thePath == NULL || theVec == NULL) return aGEOMObject._retn();
-
   //Get the reference objects
-  Handle(GEOM_Object) aBase = GetOperations()->GetEngine()->GetObject
-    (theBase->GetStudyID(), theBase->GetEntry());
-  Handle(GEOM_Object) aPath = GetOperations()->GetEngine()->GetObject
-    (thePath->GetStudyID(), thePath->GetEntry());
-  Handle(GEOM_Object) aVec = GetOperations()->GetEngine()->GetObject
-    (theVec->GetStudyID(), theVec->GetEntry());
+  Handle(GEOM_Object) aBase = GetObjectImpl(theBase);
+  Handle(GEOM_Object) aPath = GetObjectImpl(thePath);
+  Handle(GEOM_Object) aVec = GetObjectImpl(theVec);
 
   if (aBase.IsNull() || aPath.IsNull() || aVec.IsNull()) return aGEOMObject._retn();
 
index f475de827f6ea049caa991d573a4e17543d69d5a..b4c3b9f8e0e21655d8f77d1f1590293f2e443775 100644 (file)
@@ -18,7 +18,7 @@
 //  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
 //
 //  See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
-//
+
 #include <Standard_Stream.hxx>
 
 #include "GEOM_IBasicOperations_i.hh"
@@ -36,8 +36,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,8 +67,7 @@ GEOM::GEOM_Object_ptr GEOM_IBasicOperations_i::MakePointXYZ
   //Set a not done flag
   GetOperations()->SetNotDone();
 
-   //Create the point
-
+  //Create the point
   Handle(GEOM_Object) anObject = GetOperations()->MakePointXYZ(theX, theY, theZ);
   if (!GetOperations()->IsDone() || anObject.IsNull())
     return aGEOMObject._retn();
@@ -89,18 +88,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);
+    GetOperations()->MakePointWithReference(aReference, theX, theY, theZ);
   if (!GetOperations()->IsDone() || anObject.IsNull())
     return aGEOMObject._retn();
 
@@ -120,18 +114,12 @@ 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 =
     GetOperations()->MakePointOnLinesIntersection(aRef1, aRef2);
   if (!GetOperations()->IsDone() || anObject.IsNull())
@@ -140,7 +128,6 @@ GEOM::GEOM_Object_ptr GEOM_IBasicOperations_i::MakePointOnLinesIntersection
   return GetObject(anObject);
 }
 
-
 //=============================================================================
 /*!
  *  MakePointOnCurve
@@ -154,25 +141,19 @@ GEOM::GEOM_Object_ptr GEOM_IBasicOperations_i::MakePointOnCurve
   //Set a not done flag
   GetOperations()->SetNotDone();
 
-  if (theCurve == NULL) return aGEOMObject._retn();
-
   //Get the reference curve
-
-  Handle(GEOM_Object) aRefernce = GetOperations()->GetEngine()->GetObject
-    (theCurve->GetStudyID(), theCurve->GetEntry());
-  if (aRefernce.IsNull()) return aGEOMObject._retn();
+  Handle(GEOM_Object) aReference = GetObjectImpl(theCurve);
+  if (aReference.IsNull()) return aGEOMObject._retn();
 
   //Create the point
-
   Handle(GEOM_Object) anObject =
-    GetOperations()->MakePointOnCurve(aRefernce, theParameter);
+    GetOperations()->MakePointOnCurve(aReference, theParameter);
   if (!GetOperations()->IsDone() || anObject.IsNull())
     return aGEOMObject._retn();
 
   return GetObject(anObject);
 }
 
-
 //=============================================================================
 /*!
  *  MakePointOnSurface
@@ -180,24 +161,21 @@ 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) 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);
+    GetOperations()->MakePointOnSurface(aReference, theUParameter, theVParameter);
   if (!GetOperations()->IsDone() || anObject.IsNull())
     return aGEOMObject._retn();
 
@@ -218,25 +196,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
-
+  //Create the vector
   Handle(GEOM_Object) anObject =
-    GetOperations()->MakeTangentOnCurve(aRefernce, theParameter);
+    GetOperations()->MakeTangentOnCurve(aReference, theParameter);
   if (!GetOperations()->IsDone() || anObject.IsNull())
     return aGEOMObject._retn();
 
   return GetObject(anObject);
 }
 
-
 //=============================================================================
 /*!
  *  MakeVectorDXDYDZ
@@ -272,20 +244,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 +271,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 +297,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,18 +323,12 @@ 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 =
     GetOperations()->MakeLineTwoFaces(aRef1, aRef2);
   if (!GetOperations()->IsDone() || anObject.IsNull())
@@ -392,6 +337,7 @@ GEOM::GEOM_Object_ptr GEOM_IBasicOperations_i::MakeLineTwoFaces
   return GetObject(anObject);
 }
 
+
 //=============================================================================
 /*!
  *  MakePlanePntVec
@@ -399,25 +345,19 @@ 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 =
     GetOperations()->MakePlanePntVec(aRef1, aRef2, theTrimSize);
   if (!GetOperations()->IsDone() || anObject.IsNull())
@@ -433,29 +373,21 @@ 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 =
     GetOperations()->MakePlaneThreePnt(aRef1, aRef2, aRef3, theTrimSize);
   if (!GetOperations()->IsDone() || anObject.IsNull())
@@ -477,16 +409,11 @@ 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 =
     GetOperations()->MakePlaneFace(aRef, theTrimSize);
   if (!GetOperations()->IsDone() || anObject.IsNull())
@@ -513,8 +440,8 @@ GEOM::GEOM_Object_ptr GEOM_IBasicOperations_i::MakeMarker
 
   //Create the point
   Handle(GEOM_Object) anObject = GetOperations()->MakeMarker(theOX , theOY , theOZ,
-                                                            theXDX, theXDY, theXDZ,
-                                                            theYDX, theYDY, theYDZ);
+                                                             theXDX, theXDY, theXDZ,
+                                                             theYDX, theYDY, theYDZ);
   if (!GetOperations()->IsDone() || anObject.IsNull())
     return aGEOMObject._retn();
 
@@ -528,26 +455,21 @@ 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 =
     GetOperations()->MakeTangentPlaneOnFace(aRef, theParameterU,theParameterV,theTrimSize);
   if (!GetOperations()->IsDone() || anObject.IsNull())
@@ -555,4 +477,3 @@ GEOM::GEOM_Object_ptr GEOM_IBasicOperations_i::MakeTangentPlaneOnFace
 
   return GetObject(anObject);
 }
-
index eac2192121a84944ca88a71ac3d6ed209adc4af8..4763ba016c64425e36d84616f33c22bf945595f1 100644 (file)
@@ -18,7 +18,7 @@
 //  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
 //
 //  See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
-//
+
 #include <Standard_Stream.hxx>
 
 #include "GEOM_IBlocksOperations_i.hh"
@@ -41,8 +41,8 @@ using namespace std;
  */
 //=============================================================================
 GEOM_IBlocksOperations_i::GEOM_IBlocksOperations_i (PortableServer::POA_ptr thePOA,
-                                                   GEOM::GEOM_Gen_ptr theEngine,
-                                                   ::GEOMImpl_IBlocksOperations* theImpl)
+                                                    GEOM::GEOM_Gen_ptr theEngine,
+                                                    ::GEOMImpl_IBlocksOperations* theImpl)
 :GEOM_IOperations_i(thePOA, theEngine, theImpl)
 {
   MESSAGE("GEOM_IBlocksOperations_i::GEOM_IBlocksOperations_i");
@@ -66,25 +66,18 @@ GEOM_IBlocksOperations_i::~GEOM_IBlocksOperations_i()
 //=============================================================================
 GEOM::GEOM_Object_ptr GEOM_IBlocksOperations_i::MakeQuad
                (GEOM::GEOM_Object_ptr theEdge1, GEOM::GEOM_Object_ptr theEdge2,
-               GEOM::GEOM_Object_ptr theEdge3, GEOM::GEOM_Object_ptr theEdge4)
+                GEOM::GEOM_Object_ptr theEdge3, GEOM::GEOM_Object_ptr theEdge4)
 {
   GEOM::GEOM_Object_var aGEOMObject;
 
   //Set a not done flag
   GetOperations()->SetNotDone();
 
-  if (theEdge1 == NULL || theEdge2 == NULL ||
-      theEdge3 == NULL || theEdge4 == NULL) return aGEOMObject._retn();
-
   //Get the reference edges
-  Handle(GEOM_Object) anEdge1 = GetOperations()->GetEngine()->GetObject
-    (theEdge1->GetStudyID(), theEdge1->GetEntry());
-  Handle(GEOM_Object) anEdge2 = GetOperations()->GetEngine()->GetObject
-    (theEdge2->GetStudyID(), theEdge2->GetEntry());
-  Handle(GEOM_Object) anEdge3 = GetOperations()->GetEngine()->GetObject
-    (theEdge3->GetStudyID(), theEdge3->GetEntry());
-  Handle(GEOM_Object) anEdge4 = GetOperations()->GetEngine()->GetObject
-    (theEdge4->GetStudyID(), theEdge4->GetEntry());
+  Handle(GEOM_Object) anEdge1 = GetObjectImpl(theEdge1);
+  Handle(GEOM_Object) anEdge2 = GetObjectImpl(theEdge2);
+  Handle(GEOM_Object) anEdge3 = GetObjectImpl(theEdge3);
+  Handle(GEOM_Object) anEdge4 = GetObjectImpl(theEdge4);
 
   if (anEdge1.IsNull() || anEdge2.IsNull() ||
       anEdge3.IsNull() || anEdge4.IsNull()) return aGEOMObject._retn();
@@ -111,13 +104,9 @@ GEOM::GEOM_Object_ptr GEOM_IBlocksOperations_i::MakeQuad2Edges
   //Set a not done flag
   GetOperations()->SetNotDone();
 
-  if (theEdge1 == NULL || theEdge2 == NULL) return aGEOMObject._retn();
-
   //Get the reference edges
-  Handle(GEOM_Object) anEdge1 = GetOperations()->GetEngine()->GetObject
-    (theEdge1->GetStudyID(), theEdge1->GetEntry());
-  Handle(GEOM_Object) anEdge2 = GetOperations()->GetEngine()->GetObject
-    (theEdge2->GetStudyID(), theEdge2->GetEntry());
+  Handle(GEOM_Object) anEdge1 = GetObjectImpl(theEdge1);
+  Handle(GEOM_Object) anEdge2 = GetObjectImpl(theEdge2);
 
   if (anEdge1.IsNull() || anEdge2.IsNull()) return aGEOMObject._retn();
 
@@ -137,25 +126,18 @@ GEOM::GEOM_Object_ptr GEOM_IBlocksOperations_i::MakeQuad2Edges
 //=============================================================================
 GEOM::GEOM_Object_ptr GEOM_IBlocksOperations_i::MakeQuad4Vertices
                       (GEOM::GEOM_Object_ptr thePnt1, GEOM::GEOM_Object_ptr thePnt2,
-                      GEOM::GEOM_Object_ptr thePnt3, GEOM::GEOM_Object_ptr thePnt4)
+                       GEOM::GEOM_Object_ptr thePnt3, GEOM::GEOM_Object_ptr thePnt4)
 {
   GEOM::GEOM_Object_var aGEOMObject;
 
   //Set a not done flag
   GetOperations()->SetNotDone();
 
-  if (thePnt1 == NULL || thePnt2 == NULL ||
-      thePnt3 == NULL || thePnt4 == NULL) return aGEOMObject._retn();
-
   //Get the reference points
-  Handle(GEOM_Object) aPnt1 = GetOperations()->GetEngine()->GetObject
-    (thePnt1->GetStudyID(), thePnt1->GetEntry());
-  Handle(GEOM_Object) aPnt2 = GetOperations()->GetEngine()->GetObject
-    (thePnt2->GetStudyID(), thePnt2->GetEntry());
-  Handle(GEOM_Object) aPnt3 = GetOperations()->GetEngine()->GetObject
-    (thePnt3->GetStudyID(), thePnt3->GetEntry());
-  Handle(GEOM_Object) aPnt4 = GetOperations()->GetEngine()->GetObject
-    (thePnt4->GetStudyID(), thePnt4->GetEntry());
+  Handle(GEOM_Object) aPnt1 = GetObjectImpl(thePnt1);
+  Handle(GEOM_Object) aPnt2 = GetObjectImpl(thePnt2);
+  Handle(GEOM_Object) aPnt3 = GetObjectImpl(thePnt3);
+  Handle(GEOM_Object) aPnt4 = GetObjectImpl(thePnt4);
 
   if (aPnt1.IsNull() || aPnt2.IsNull() ||
       aPnt3.IsNull() || aPnt4.IsNull()) return aGEOMObject._retn();
@@ -176,31 +158,21 @@ GEOM::GEOM_Object_ptr GEOM_IBlocksOperations_i::MakeQuad4Vertices
 //=============================================================================
 GEOM::GEOM_Object_ptr GEOM_IBlocksOperations_i::MakeHexa
                (GEOM::GEOM_Object_ptr theFace1, GEOM::GEOM_Object_ptr theFace2,
-               GEOM::GEOM_Object_ptr theFace3, GEOM::GEOM_Object_ptr theFace4,
-               GEOM::GEOM_Object_ptr theFace5, GEOM::GEOM_Object_ptr theFace6)
+                GEOM::GEOM_Object_ptr theFace3, GEOM::GEOM_Object_ptr theFace4,
+                GEOM::GEOM_Object_ptr theFace5, GEOM::GEOM_Object_ptr theFace6)
 {
   GEOM::GEOM_Object_var aGEOMObject;
 
   //Set a not done flag
   GetOperations()->SetNotDone();
 
-  if (theFace1 == NULL || theFace2 == NULL ||
-      theFace3 == NULL || theFace4 == NULL ||
-      theFace5 == NULL || theFace6 == NULL) return aGEOMObject._retn();
-
   //Get the reference Faces
-  Handle(GEOM_Object) anFace1 = GetOperations()->GetEngine()->GetObject
-    (theFace1->GetStudyID(), theFace1->GetEntry());
-  Handle(GEOM_Object) anFace2 = GetOperations()->GetEngine()->GetObject
-    (theFace2->GetStudyID(), theFace2->GetEntry());
-  Handle(GEOM_Object) anFace3 = GetOperations()->GetEngine()->GetObject
-    (theFace3->GetStudyID(), theFace3->GetEntry());
-  Handle(GEOM_Object) anFace4 = GetOperations()->GetEngine()->GetObject
-    (theFace4->GetStudyID(), theFace4->GetEntry());
-  Handle(GEOM_Object) anFace5 = GetOperations()->GetEngine()->GetObject
-    (theFace5->GetStudyID(), theFace5->GetEntry());
-  Handle(GEOM_Object) anFace6 = GetOperations()->GetEngine()->GetObject
-    (theFace6->GetStudyID(), theFace6->GetEntry());
+  Handle(GEOM_Object) anFace1 = GetObjectImpl(theFace1);
+  Handle(GEOM_Object) anFace2 = GetObjectImpl(theFace2);
+  Handle(GEOM_Object) anFace3 = GetObjectImpl(theFace3);
+  Handle(GEOM_Object) anFace4 = GetObjectImpl(theFace4);
+  Handle(GEOM_Object) anFace5 = GetObjectImpl(theFace5);
+  Handle(GEOM_Object) anFace6 = GetObjectImpl(theFace6);
 
   if (anFace1.IsNull() || anFace2.IsNull() ||
       anFace3.IsNull() || anFace4.IsNull() ||
@@ -228,13 +200,9 @@ GEOM::GEOM_Object_ptr GEOM_IBlocksOperations_i::MakeHexa2Faces
   //Set a not done flag
   GetOperations()->SetNotDone();
 
-  if (theFace1 == NULL || theFace2 == NULL) return aGEOMObject._retn();
-
   //Get the reference Faces
-  Handle(GEOM_Object) anFace1 = GetOperations()->GetEngine()->GetObject
-    (theFace1->GetStudyID(), theFace1->GetEntry());
-  Handle(GEOM_Object) anFace2 = GetOperations()->GetEngine()->GetObject
-    (theFace2->GetStudyID(), theFace2->GetEntry());
+  Handle(GEOM_Object) anFace1 = GetObjectImpl(theFace1);
+  Handle(GEOM_Object) anFace2 = GetObjectImpl(theFace2);
 
   if (anFace1.IsNull() || anFace2.IsNull()) return aGEOMObject._retn();
 
@@ -260,12 +228,8 @@ GEOM::GEOM_Object_ptr GEOM_IBlocksOperations_i::MakeBlockCompound
   //Set a not done flag
   GetOperations()->SetNotDone();
 
-  if (theCompound == NULL) return aGEOMObject._retn();
-
   //Get the reference Compound
-  Handle(GEOM_Object) aCompound = GetOperations()->GetEngine()->GetObject
-    (theCompound->GetStudyID(), theCompound->GetEntry());
-
+  Handle(GEOM_Object) aCompound = GetObjectImpl(theCompound);
   if (aCompound.IsNull()) return aGEOMObject._retn();
 
   //Create the Blocks Compound
@@ -283,22 +247,18 @@ GEOM::GEOM_Object_ptr GEOM_IBlocksOperations_i::MakeBlockCompound
  */
 //=============================================================================
 GEOM::GEOM_Object_ptr GEOM_IBlocksOperations_i::GetPoint (GEOM::GEOM_Object_ptr theShape,
-                                                         const CORBA::Double   theX,
-                                                         const CORBA::Double   theY,
-                                                         const CORBA::Double   theZ,
-                                                         const CORBA::Double   theEpsilon)
+                                                          const CORBA::Double   theX,
+                                                          const CORBA::Double   theY,
+                                                          const CORBA::Double   theZ,
+                                                          const CORBA::Double   theEpsilon)
 {
   GEOM::GEOM_Object_var aGEOMObject;
 
   //Set a not done flag
   GetOperations()->SetNotDone();
 
-  if (theShape == NULL) return aGEOMObject._retn();
-
   //Get the reference Objects
-  Handle(GEOM_Object) aShape = GetOperations()->GetEngine()->GetObject
-    (theShape->GetStudyID(), theShape->GetEntry());
-
+  Handle(GEOM_Object) aShape = GetObjectImpl(theShape);
   if (aShape.IsNull()) return aGEOMObject._retn();
 
   //Create the Point
@@ -316,24 +276,18 @@ GEOM::GEOM_Object_ptr GEOM_IBlocksOperations_i::GetPoint (GEOM::GEOM_Object_ptr
  */
 //=============================================================================
 GEOM::GEOM_Object_ptr GEOM_IBlocksOperations_i::GetEdge (GEOM::GEOM_Object_ptr theShape,
-                                                        GEOM::GEOM_Object_ptr thePoint1,
-                                                        GEOM::GEOM_Object_ptr thePoint2)
+                                                         GEOM::GEOM_Object_ptr thePoint1,
+                                                         GEOM::GEOM_Object_ptr thePoint2)
 {
   GEOM::GEOM_Object_var aGEOMObject;
 
   //Set a not done flag
   GetOperations()->SetNotDone();
 
-  if (theShape == NULL ||
-      thePoint1 == NULL || thePoint2 == NULL) return aGEOMObject._retn();
-
   //Get the reference Objects
-  Handle(GEOM_Object) aShape = GetOperations()->GetEngine()->GetObject
-    (theShape->GetStudyID(), theShape->GetEntry());
-  Handle(GEOM_Object) aPoint1 = GetOperations()->GetEngine()->GetObject
-    (thePoint1->GetStudyID(), thePoint1->GetEntry());
-  Handle(GEOM_Object) aPoint2 = GetOperations()->GetEngine()->GetObject
-    (thePoint2->GetStudyID(), thePoint2->GetEntry());
+  Handle(GEOM_Object) aShape = GetObjectImpl(theShape);
+  Handle(GEOM_Object) aPoint1 = GetObjectImpl(thePoint1);
+  Handle(GEOM_Object) aPoint2 = GetObjectImpl(thePoint2);
 
   if (aShape.IsNull() ||
       aPoint1.IsNull() || aPoint2.IsNull()) return aGEOMObject._retn();
@@ -353,20 +307,16 @@ GEOM::GEOM_Object_ptr GEOM_IBlocksOperations_i::GetEdge (GEOM::GEOM_Object_ptr t
  */
 //=============================================================================
 GEOM::GEOM_Object_ptr GEOM_IBlocksOperations_i::GetEdgeNearPoint (GEOM::GEOM_Object_ptr theShape,
-                                                                 GEOM::GEOM_Object_ptr thePoint)
+                                                                  GEOM::GEOM_Object_ptr thePoint)
 {
   GEOM::GEOM_Object_var aGEOMObject;
 
   //Set a not done flag
   GetOperations()->SetNotDone();
 
-  if (theShape == NULL || thePoint == NULL) return aGEOMObject._retn();
-
   //Get the reference Objects
-  Handle(GEOM_Object) aShape = GetOperations()->GetEngine()->GetObject
-    (theShape->GetStudyID(), theShape->GetEntry());
-  Handle(GEOM_Object) aPoint = GetOperations()->GetEngine()->GetObject
-    (thePoint->GetStudyID(), thePoint->GetEntry());
+  Handle(GEOM_Object) aShape = GetObjectImpl(theShape);
+  Handle(GEOM_Object) aPoint = GetObjectImpl(thePoint);
 
   if (aShape.IsNull() || aPoint.IsNull()) return aGEOMObject._retn();
 
@@ -386,31 +336,22 @@ GEOM::GEOM_Object_ptr GEOM_IBlocksOperations_i::GetEdgeNearPoint (GEOM::GEOM_Obj
 //=============================================================================
 GEOM::GEOM_Object_ptr GEOM_IBlocksOperations_i::GetFaceByPoints
                                               (GEOM::GEOM_Object_ptr theShape,
-                                              GEOM::GEOM_Object_ptr thePoint1,
-                                              GEOM::GEOM_Object_ptr thePoint2,
-                                              GEOM::GEOM_Object_ptr thePoint3,
-                                              GEOM::GEOM_Object_ptr thePoint4)
+                                               GEOM::GEOM_Object_ptr thePoint1,
+                                               GEOM::GEOM_Object_ptr thePoint2,
+                                               GEOM::GEOM_Object_ptr thePoint3,
+                                               GEOM::GEOM_Object_ptr thePoint4)
 {
   GEOM::GEOM_Object_var aGEOMObject;
 
   //Set a not done flag
   GetOperations()->SetNotDone();
 
-  if (theShape == NULL ||
-      thePoint1 == NULL || thePoint2 == NULL ||
-      thePoint3 == NULL || thePoint4 == NULL) return aGEOMObject._retn();
-
   //Get the reference Objects
-  Handle(GEOM_Object) aShape = GetOperations()->GetEngine()->GetObject
-    (theShape->GetStudyID(), theShape->GetEntry());
-  Handle(GEOM_Object) aPoint1 = GetOperations()->GetEngine()->GetObject
-    (thePoint1->GetStudyID(), thePoint1->GetEntry());
-  Handle(GEOM_Object) aPoint2 = GetOperations()->GetEngine()->GetObject
-    (thePoint2->GetStudyID(), thePoint2->GetEntry());
-  Handle(GEOM_Object) aPoint3 = GetOperations()->GetEngine()->GetObject
-    (thePoint3->GetStudyID(), thePoint3->GetEntry());
-  Handle(GEOM_Object) aPoint4 = GetOperations()->GetEngine()->GetObject
-    (thePoint4->GetStudyID(), thePoint4->GetEntry());
+  Handle(GEOM_Object) aShape = GetObjectImpl(theShape);
+  Handle(GEOM_Object) aPoint1 = GetObjectImpl(thePoint1);
+  Handle(GEOM_Object) aPoint2 = GetObjectImpl(thePoint2);
+  Handle(GEOM_Object) aPoint3 = GetObjectImpl(thePoint3);
+  Handle(GEOM_Object) aPoint4 = GetObjectImpl(thePoint4);
 
   if (aShape.IsNull() ||
       aPoint1.IsNull() || aPoint2.IsNull() ||
@@ -432,24 +373,18 @@ GEOM::GEOM_Object_ptr GEOM_IBlocksOperations_i::GetFaceByPoints
 //=============================================================================
 GEOM::GEOM_Object_ptr GEOM_IBlocksOperations_i::GetFaceByEdges
                                                (GEOM::GEOM_Object_ptr theShape,
-                                               GEOM::GEOM_Object_ptr theEdge1,
-                                               GEOM::GEOM_Object_ptr theEdge2)
+                                                GEOM::GEOM_Object_ptr theEdge1,
+                                                GEOM::GEOM_Object_ptr theEdge2)
 {
   GEOM::GEOM_Object_var aGEOMObject;
 
   //Set a not done flag
   GetOperations()->SetNotDone();
 
-  if (theShape == NULL ||
-      theEdge1 == NULL || theEdge2 == NULL) return aGEOMObject._retn();
-
   //Get the reference Objects
-  Handle(GEOM_Object) aShape = GetOperations()->GetEngine()->GetObject
-    (theShape->GetStudyID(), theShape->GetEntry());
-  Handle(GEOM_Object) anEdge1 = GetOperations()->GetEngine()->GetObject
-    (theEdge1->GetStudyID(), theEdge1->GetEntry());
-  Handle(GEOM_Object) anEdge2 = GetOperations()->GetEngine()->GetObject
-    (theEdge2->GetStudyID(), theEdge2->GetEntry());
+  Handle(GEOM_Object) aShape = GetObjectImpl(theShape);
+  Handle(GEOM_Object) anEdge1 = GetObjectImpl(theEdge1);
+  Handle(GEOM_Object) anEdge2 = GetObjectImpl(theEdge2);
 
   if (aShape.IsNull() ||
       anEdge1.IsNull() || anEdge2.IsNull()) return aGEOMObject._retn();
@@ -469,20 +404,16 @@ GEOM::GEOM_Object_ptr GEOM_IBlocksOperations_i::GetFaceByEdges
  */
 //=============================================================================
 GEOM::GEOM_Object_ptr GEOM_IBlocksOperations_i::GetOppositeFace (GEOM::GEOM_Object_ptr theShape,
-                                                                GEOM::GEOM_Object_ptr theFace)
+                                                                 GEOM::GEOM_Object_ptr theFace)
 {
   GEOM::GEOM_Object_var aGEOMObject;
 
   //Set a not done flag
   GetOperations()->SetNotDone();
 
-  if (theShape == NULL || theFace == NULL) return aGEOMObject._retn();
-
   //Get the reference Objects
-  Handle(GEOM_Object) aShape = GetOperations()->GetEngine()->GetObject
-    (theShape->GetStudyID(), theShape->GetEntry());
-  Handle(GEOM_Object) aFace = GetOperations()->GetEngine()->GetObject
-    (theFace->GetStudyID(), theFace->GetEntry());
+  Handle(GEOM_Object) aShape = GetObjectImpl(theShape);
+  Handle(GEOM_Object) aFace = GetObjectImpl(theFace);
 
   if (aShape.IsNull() || aFace.IsNull()) return aGEOMObject._retn();
 
@@ -501,20 +432,16 @@ GEOM::GEOM_Object_ptr GEOM_IBlocksOperations_i::GetOppositeFace (GEOM::GEOM_Obje
  */
 //=============================================================================
 GEOM::GEOM_Object_ptr GEOM_IBlocksOperations_i::GetFaceNearPoint (GEOM::GEOM_Object_ptr theShape,
-                                                                 GEOM::GEOM_Object_ptr thePoint)
+                                                                  GEOM::GEOM_Object_ptr thePoint)
 {
   GEOM::GEOM_Object_var aGEOMObject;
 
   //Set a not done flag
   GetOperations()->SetNotDone();
 
-  if (theShape == NULL || thePoint == NULL) return aGEOMObject._retn();
-
   //Get the reference Objects
-  Handle(GEOM_Object) aShape = GetOperations()->GetEngine()->GetObject
-    (theShape->GetStudyID(), theShape->GetEntry());
-  Handle(GEOM_Object) aPoint = GetOperations()->GetEngine()->GetObject
-    (thePoint->GetStudyID(), thePoint->GetEntry());
+  Handle(GEOM_Object) aShape = GetObjectImpl(theShape);
+  Handle(GEOM_Object) aPoint = GetObjectImpl(thePoint);
 
   if (aShape.IsNull() || aPoint.IsNull()) return aGEOMObject._retn();
 
@@ -533,20 +460,16 @@ GEOM::GEOM_Object_ptr GEOM_IBlocksOperations_i::GetFaceNearPoint (GEOM::GEOM_Obj
  */
 //=============================================================================
 GEOM::GEOM_Object_ptr GEOM_IBlocksOperations_i::GetFaceByNormale (GEOM::GEOM_Object_ptr theShape,
-                                                                 GEOM::GEOM_Object_ptr theVector)
+                                                                  GEOM::GEOM_Object_ptr theVector)
 {
   GEOM::GEOM_Object_var aGEOMObject;
 
   //Set a not done flag
   GetOperations()->SetNotDone();
 
-  if (theShape == NULL || theVector == NULL) return aGEOMObject._retn();
-
   //Get the reference Objects
-  Handle(GEOM_Object) aShape = GetOperations()->GetEngine()->GetObject
-    (theShape->GetStudyID(), theShape->GetEntry());
-  Handle(GEOM_Object) aVector = GetOperations()->GetEngine()->GetObject
-    (theVector->GetStudyID(), theVector->GetEntry());
+  Handle(GEOM_Object) aShape = GetObjectImpl(theShape);
+  Handle(GEOM_Object) aVector = GetObjectImpl(theVector);
 
   if (aShape.IsNull() || aVector.IsNull()) return aGEOMObject._retn();
 
@@ -566,20 +489,16 @@ GEOM::GEOM_Object_ptr GEOM_IBlocksOperations_i::GetFaceByNormale (GEOM::GEOM_Obj
 //=============================================================================
 GEOM::ListOfGO* GEOM_IBlocksOperations_i::ExplodeCompoundOfBlocks
                                           (GEOM::GEOM_Object_ptr theCompound,
-                                          const CORBA::Long     theMinNbFaces,
-                                          const CORBA::Long     theMaxNbFaces)
+                                           const CORBA::Long     theMinNbFaces,
+                                           const CORBA::Long     theMaxNbFaces)
 {
   GEOM::ListOfGO_var aSeq = new GEOM::ListOfGO;
 
   //Set a not done flag
   GetOperations()->SetNotDone();
 
-  if (theCompound == NULL) return aSeq._retn();
-
   //Get the reference Compound
-  Handle(GEOM_Object) aCompound = GetOperations()->GetEngine()->GetObject
-    (theCompound->GetStudyID(), theCompound->GetEntry());
-
+  Handle(GEOM_Object) aCompound = GetObjectImpl(theCompound);
   if (aCompound.IsNull()) return aSeq._retn();
 
   //Explode
@@ -603,9 +522,9 @@ GEOM::ListOfGO* GEOM_IBlocksOperations_i::ExplodeCompoundOfBlocks
 //=============================================================================
 CORBA::Boolean GEOM_IBlocksOperations_i::IsCompoundOfBlocks
                                           (GEOM::GEOM_Object_ptr theCompound,
-                                          const CORBA::Long     theMinNbFaces,
-                                          const CORBA::Long     theMaxNbFaces,
-                                          CORBA::Long&          theNbBlocks)
+                                           const CORBA::Long     theMinNbFaces,
+                                           const CORBA::Long     theMaxNbFaces,
+                                           CORBA::Long&          theNbBlocks)
 {
   theNbBlocks = 0;
   CORBA::Boolean isComp = false;
@@ -613,20 +532,16 @@ CORBA::Boolean GEOM_IBlocksOperations_i::IsCompoundOfBlocks
   //Set a not done flag
   GetOperations()->SetNotDone();
 
-  if (theCompound == NULL) return isComp;
-
   //Get the reference Compound
-  Handle(GEOM_Object) aCompound = GetOperations()->GetEngine()->GetObject
-    (theCompound->GetStudyID(), theCompound->GetEntry());
-
+  Handle(GEOM_Object) aCompound = GetObjectImpl(theCompound);
   if (aCompound.IsNull()) return isComp;
 
   //Check
   Standard_Integer nbBlocks = 0;
   isComp = GetOperations()->IsCompoundOfBlocks(aCompound,
-                                              theMinNbFaces,
-                                              theMaxNbFaces,
-                                              nbBlocks);
+                                               theMinNbFaces,
+                                               theMaxNbFaces,
+                                               nbBlocks);
   if (!GetOperations()->IsDone())
     return isComp;
 
@@ -641,19 +556,15 @@ CORBA::Boolean GEOM_IBlocksOperations_i::IsCompoundOfBlocks
 //=============================================================================
 CORBA::Boolean GEOM_IBlocksOperations_i::CheckCompoundOfBlocks
                                           (GEOM::GEOM_Object_ptr theCompound,
-                                          GEOM::GEOM_IBlocksOperations::BCErrors_out theErrors)
+                                           GEOM::GEOM_IBlocksOperations::BCErrors_out theErrors)
 {
   CORBA::Boolean isComp = false;
 
   //Set a not done flag
   GetOperations()->SetNotDone();
 
-  if (theCompound == NULL) return isComp;
-
   //Get the reference Compound
-  Handle(GEOM_Object) aCompound = GetOperations()->GetEngine()->GetObject
-    (theCompound->GetStudyID(), theCompound->GetEntry());
-
+  Handle(GEOM_Object) aCompound = GetObjectImpl(theCompound);
   if (aCompound.IsNull()) return isComp;
 
   //Check
@@ -724,12 +635,10 @@ CORBA::Boolean GEOM_IBlocksOperations_i::CheckCompoundOfBlocks
 //=============================================================================
 char* GEOM_IBlocksOperations_i::PrintBCErrors
                       (GEOM::GEOM_Object_ptr theCompound,
-                      const GEOM::GEOM_IBlocksOperations::BCErrors& theErrors)
+                       const GEOM::GEOM_IBlocksOperations::BCErrors& theErrors)
 {
   //Get the reference Compound
-  if (theCompound == NULL) return NULL;
-  Handle(GEOM_Object) aCompound = GetOperations()->GetEngine()->GetObject
-    (theCompound->GetStudyID(), theCompound->GetEntry());
+  Handle(GEOM_Object) aCompound = GetObjectImpl(theCompound);
   if (aCompound.IsNull()) return NULL;
 
   // Convert the errors sequence
@@ -772,7 +681,7 @@ char* GEOM_IBlocksOperations_i::PrintBCErrors
   }
 
   TCollection_AsciiString aDescr = GetOperations()->PrintBCErrors(aCompound, anErrors);
-  return CORBA::string_dup(aDescr.ToCString());    
+  return CORBA::string_dup(aDescr.ToCString());
 }
 
 //=============================================================================
@@ -787,12 +696,8 @@ GEOM::GEOM_Object_ptr GEOM_IBlocksOperations_i::RemoveExtraEdges (GEOM::GEOM_Obj
   //Set a not done flag
   GetOperations()->SetNotDone();
 
-  if (theShape == NULL) return aGEOMObject._retn();
-
   //Get the reference Objects
-  Handle(GEOM_Object) aShape = GetOperations()->GetEngine()->GetObject
-    (theShape->GetStudyID(), theShape->GetEntry());
-
+  Handle(GEOM_Object) aShape = GetObjectImpl(theShape);
   if (aShape.IsNull()) return aGEOMObject._retn();
 
   //Get the result
@@ -816,12 +721,8 @@ GEOM::GEOM_Object_ptr GEOM_IBlocksOperations_i::CheckAndImprove (GEOM::GEOM_Obje
   //Set a not done flag
   GetOperations()->SetNotDone();
 
-  if (theCompound == NULL) return aGEOMObject._retn();
-
   //Get the reference Objects
-  Handle(GEOM_Object) aCompound = GetOperations()->GetEngine()->GetObject
-    (theCompound->GetStudyID(), theCompound->GetEntry());
-
+  Handle(GEOM_Object) aCompound = GetObjectImpl(theCompound);
   if (aCompound.IsNull()) return aGEOMObject._retn();
 
   //Get the result
@@ -839,20 +740,16 @@ GEOM::GEOM_Object_ptr GEOM_IBlocksOperations_i::CheckAndImprove (GEOM::GEOM_Obje
  */
 //=============================================================================
 GEOM::GEOM_Object_ptr GEOM_IBlocksOperations_i::GetBlockNearPoint (GEOM::GEOM_Object_ptr theCompound,
-                                                                  GEOM::GEOM_Object_ptr thePoint)
+                                                                   GEOM::GEOM_Object_ptr thePoint)
 {
   GEOM::GEOM_Object_var aGEOMObject;
 
   //Set a not done flag
   GetOperations()->SetNotDone();
 
-  if (theCompound == NULL || thePoint == NULL) return aGEOMObject._retn();
-
   //Get the reference Objects
-  Handle(GEOM_Object) aCompound = GetOperations()->GetEngine()->GetObject
-    (theCompound->GetStudyID(), theCompound->GetEntry());
-  Handle(GEOM_Object) aPoint = GetOperations()->GetEngine()->GetObject
-    (thePoint->GetStudyID(), thePoint->GetEntry());
+  Handle(GEOM_Object) aCompound = GetObjectImpl(theCompound);
+  Handle(GEOM_Object) aPoint = GetObjectImpl(thePoint);
 
   if (aCompound.IsNull() || aPoint.IsNull()) return aGEOMObject._retn();
 
@@ -871,19 +768,15 @@ GEOM::GEOM_Object_ptr GEOM_IBlocksOperations_i::GetBlockNearPoint (GEOM::GEOM_Ob
  */
 //=============================================================================
 GEOM::GEOM_Object_ptr GEOM_IBlocksOperations_i::GetBlockByParts (GEOM::GEOM_Object_ptr theCompound,
-                                                                const GEOM::ListOfGO& theParts)
+                                                                 const GEOM::ListOfGO& theParts)
 {
   GEOM::GEOM_Object_var aGEOMObject;
 
   //Set a not done flag
   GetOperations()->SetNotDone();
 
-  if (theCompound == NULL) return aGEOMObject._retn();
-
   //Get the reference Compound
-  Handle(GEOM_Object) aCompound = GetOperations()->GetEngine()->GetObject
-    (theCompound->GetStudyID(), theCompound->GetEntry());
-
+  Handle(GEOM_Object) aCompound = GetObjectImpl(theCompound);
   if (aCompound.IsNull()) return aGEOMObject._retn();
 
   //Get the parts
@@ -892,9 +785,7 @@ GEOM::GEOM_Object_ptr GEOM_IBlocksOperations_i::GetBlockByParts (GEOM::GEOM_Obje
 
   aLen = theParts.length();
   for (ind = 0; ind < aLen; ind++) {
-    if (theParts[ind] == NULL) return aGEOMObject._retn();
-    Handle(GEOM_Object) aSh = GetOperations()->GetEngine()->GetObject
-      (theParts[ind]->GetStudyID(), theParts[ind]->GetEntry());
+    Handle(GEOM_Object) aSh = GetObjectImpl(theParts[ind]);
     if (aSh.IsNull()) return aGEOMObject._retn();
     aParts->Append(aSh);
   }
@@ -914,19 +805,15 @@ GEOM::GEOM_Object_ptr GEOM_IBlocksOperations_i::GetBlockByParts (GEOM::GEOM_Obje
  */
 //=============================================================================
 GEOM::ListOfGO* GEOM_IBlocksOperations_i::GetBlocksByParts (GEOM::GEOM_Object_ptr theCompound,
-                                                           const GEOM::ListOfGO& theParts)
+                                                            const GEOM::ListOfGO& theParts)
 {
   GEOM::ListOfGO_var aSeq = new GEOM::ListOfGO;
 
   //Set a not done flag
   GetOperations()->SetNotDone();
 
-  if (theCompound == NULL) return aSeq._retn();
-
   //Get the reference Compound
-  Handle(GEOM_Object) aCompound = GetOperations()->GetEngine()->GetObject
-    (theCompound->GetStudyID(), theCompound->GetEntry());
-
+  Handle(GEOM_Object) aCompound = GetObjectImpl(theCompound);
   if (aCompound.IsNull()) return aSeq._retn();
 
   //Get the parts
@@ -935,9 +822,7 @@ GEOM::ListOfGO* GEOM_IBlocksOperations_i::GetBlocksByParts (GEOM::GEOM_Object_pt
 
   aLen = theParts.length();
   for (ind = 0; ind < aLen; ind++) {
-    if (theParts[ind] == NULL) return aSeq._retn();
-    Handle(GEOM_Object) aSh = GetOperations()->GetEngine()->GetObject
-      (theParts[ind]->GetStudyID(), theParts[ind]->GetEntry());
+    Handle(GEOM_Object) aSh = GetObjectImpl(theParts[ind]);
     if (aSh.IsNull()) return aSeq._retn();
     aParts->Append(aSh);
   }
@@ -963,29 +848,25 @@ GEOM::ListOfGO* GEOM_IBlocksOperations_i::GetBlocksByParts (GEOM::GEOM_Object_pt
 //=============================================================================
 GEOM::GEOM_Object_ptr GEOM_IBlocksOperations_i::MakeMultiTransformation1D
                                               (GEOM::GEOM_Object_ptr theBlock,
-                                              const CORBA::Long     theDirFace1,
-                                              const CORBA::Long     theDirFace2,
-                                              const CORBA::Long     theNbTimes)
+                                               const CORBA::Long     theDirFace1,
+                                               const CORBA::Long     theDirFace2,
+                                               const CORBA::Long     theNbTimes)
 {
   GEOM::GEOM_Object_var aGEOMObject;
 
-   //Set a not done flag
+  //Set a not done flag
   GetOperations()->SetNotDone();
 
-  if (theBlock == NULL) return aGEOMObject._retn();
-
-   //Get the object itself and the vector of translation
-   Handle(GEOM_Object) aBasicObject = GetOperations()->GetEngine()->GetObject
-     (theBlock->GetStudyID(), theBlock->GetEntry());
-
-   if (aBasicObject.IsNull()) return aGEOMObject._retn();
+  //Get the object itself and the vector of translation
+  Handle(GEOM_Object) aBasicObject = GetObjectImpl(theBlock);
+  if (aBasicObject.IsNull()) return aGEOMObject._retn();
 
-   //Perform the transformation
-   Handle(GEOM_Object) anObject = GetOperations()->MakeMultiTransformation1D
-     (aBasicObject, theDirFace1, theDirFace2, theNbTimes);
-   if (!GetOperations()->IsDone() || anObject.IsNull())  return aGEOMObject._retn();
+  //Perform the transformation
+  Handle(GEOM_Object) anObject = GetOperations()->MakeMultiTransformation1D
+    (aBasicObject, theDirFace1, theDirFace2, theNbTimes);
+  if (!GetOperations()->IsDone() || anObject.IsNull())  return aGEOMObject._retn();
 
-   return GetObject(anObject);
+  return GetObject(anObject);
 }
 
 //=============================================================================
@@ -995,24 +876,20 @@ GEOM::GEOM_Object_ptr GEOM_IBlocksOperations_i::MakeMultiTransformation1D
 //=============================================================================
 GEOM::GEOM_Object_ptr GEOM_IBlocksOperations_i::MakeMultiTransformation2D
                                            (GEOM::GEOM_Object_ptr theBlock,
-                                           const CORBA::Long     theDirFace1U,
-                                           const CORBA::Long     theDirFace2U,
-                                           const CORBA::Long     theNbTimesU,
-                                           const CORBA::Long     theDirFace1V,
-                                           const CORBA::Long     theDirFace2V,
-                                           const CORBA::Long     theNbTimesV)
+                                            const CORBA::Long     theDirFace1U,
+                                            const CORBA::Long     theDirFace2U,
+                                            const CORBA::Long     theNbTimesU,
+                                            const CORBA::Long     theDirFace1V,
+                                            const CORBA::Long     theDirFace2V,
+                                            const CORBA::Long     theNbTimesV)
 {
   GEOM::GEOM_Object_var aGEOMObject;
 
   //Set a not done flag
   GetOperations()->SetNotDone();
 
-  if (theBlock == NULL) return aGEOMObject._retn();
-
   //Get the object itself
-  Handle(GEOM_Object) aBasicObject = GetOperations()->GetEngine()->GetObject
-    (theBlock->GetStudyID(), theBlock->GetEntry());
-
+  Handle(GEOM_Object) aBasicObject = GetObjectImpl(theBlock);
   if (aBasicObject.IsNull()) return aGEOMObject._retn();
 
   //Perform the transformation
@@ -1037,12 +914,8 @@ GEOM::ListOfGO* GEOM_IBlocksOperations_i::Propagate (GEOM::GEOM_Object_ptr theSh
   //Set a not done flag
   GetOperations()->SetNotDone();
 
-  if (theShape == NULL) return aSeq._retn();
-
   //Get the reference Shape
-  Handle(GEOM_Object) aShape = GetOperations()->GetEngine()->GetObject
-    (theShape->GetStudyID(), theShape->GetEntry());
-
+  Handle(GEOM_Object) aShape = GetObjectImpl(theShape);
   if (aShape.IsNull()) return aSeq._retn();
 
   //Get the Propagation chains
index cceef3727226aa55577f05f58f1f5ab3c65b82bf..7012ffa3bb4e3bfe69b0b40c54ef719f598a56e8 100644 (file)
@@ -18,7 +18,7 @@
 //  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
 //
 //  See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
-//
+
 #include <Standard_Stream.hxx>
 
 #include "GEOM_IBooleanOperations_i.hh"
@@ -37,8 +37,8 @@
  */
 //=============================================================================
 GEOM_IBooleanOperations_i::GEOM_IBooleanOperations_i (PortableServer::POA_ptr thePOA,
-                                                     GEOM::GEOM_Gen_ptr theEngine,
-                                                     ::GEOMImpl_IBooleanOperations* theImpl)
+                                                      GEOM::GEOM_Gen_ptr theEngine,
+                                                      ::GEOMImpl_IBooleanOperations* theImpl)
 :GEOM_IOperations_i(thePOA, theEngine, theImpl)
 {
   MESSAGE("GEOM_IBooleanOperations_i::GEOM_IBooleanOperations_i");
@@ -62,23 +62,17 @@ GEOM_IBooleanOperations_i::~GEOM_IBooleanOperations_i()
 //=============================================================================
 GEOM::GEOM_Object_ptr GEOM_IBooleanOperations_i::MakeBoolean
                                                  (GEOM::GEOM_Object_ptr theShape1,
-                                                 GEOM::GEOM_Object_ptr theShape2,
-                                                 CORBA::Long           theOp)
+                                                  GEOM::GEOM_Object_ptr theShape2,
+                                                  CORBA::Long           theOp)
 {
   GEOM::GEOM_Object_var aGEOMObject;
 
   //Set a not done flag
   GetOperations()->SetNotDone();
 
-  if (theShape1 == NULL || theShape2 == NULL) return aGEOMObject._retn();
-
   //Get the reference shapes
-  CORBA::String_var entry=theShape1->GetEntry();
-  Handle(GEOM_Object) aSh1 = GetOperations()->GetEngine()->GetObject
-    (theShape1->GetStudyID(), entry);
-  entry=theShape2->GetEntry();
-  Handle(GEOM_Object) aSh2 = GetOperations()->GetEngine()->GetObject
-    (theShape2->GetStudyID(), entry);
+  Handle(GEOM_Object) aSh1 = GetObjectImpl(theShape1);
+  Handle(GEOM_Object) aSh2 = GetObjectImpl(theShape2);
 
   if (aSh1.IsNull() || aSh2.IsNull()) return aGEOMObject._retn();
 
@@ -97,13 +91,13 @@ GEOM::GEOM_Object_ptr GEOM_IBooleanOperations_i::MakeBoolean
 //=============================================================================
 GEOM::GEOM_Object_ptr GEOM_IBooleanOperations_i::MakePartition
                                       (const GEOM::ListOfGO&   theShapes,
-                                      const GEOM::ListOfGO&   theTools,
-                                      const GEOM::ListOfGO&   theKeepIns,
-                                      const GEOM::ListOfGO&   theRemoveIns,
-                                      CORBA::Short            theLimit,
-                                      CORBA::Boolean          theRemoveWebs,
-                                      const GEOM::ListOfLong& theMaterials,
-                                      CORBA::Short theKeepNonlimitShapes)
+                                       const GEOM::ListOfGO&   theTools,
+                                       const GEOM::ListOfGO&   theKeepIns,
+                                       const GEOM::ListOfGO&   theRemoveIns,
+                                       CORBA::Short            theLimit,
+                                       CORBA::Boolean          theRemoveWebs,
+                                       const GEOM::ListOfLong& theMaterials,
+                                       CORBA::Short theKeepNonlimitShapes)
 {
   GEOM::GEOM_Object_var aGEOMObject;
 
@@ -120,9 +114,7 @@ GEOM::GEOM_Object_ptr GEOM_IBooleanOperations_i::MakePartition
   //Get the shapes
   aLen = theShapes.length();
   for (ind = 0; ind < aLen; ind++) {
-    if (theShapes[ind] == NULL) return aGEOMObject._retn();
-    Handle(GEOM_Object) aSh = GetOperations()->GetEngine()->GetObject
-      (theShapes[ind]->GetStudyID(), theShapes[ind]->GetEntry());
+    Handle(GEOM_Object) aSh = GetObjectImpl(theShapes[ind]);
     if (aSh.IsNull()) return aGEOMObject._retn();
     aShapes->Append(aSh);
   }
@@ -130,9 +122,7 @@ GEOM::GEOM_Object_ptr GEOM_IBooleanOperations_i::MakePartition
   //Get the tools
   aLen = theTools.length();
   for (ind = 0; ind < aLen; ind++) {
-    if (theTools[ind] == NULL) return aGEOMObject._retn();
-    Handle(GEOM_Object) aSh = GetOperations()->GetEngine()->GetObject
-      (theTools[ind]->GetStudyID(), theTools[ind]->GetEntry());
+    Handle(GEOM_Object) aSh = GetObjectImpl(theTools[ind]);
     if (aSh.IsNull()) return aGEOMObject._retn();
     aTools->Append(aSh);
   }
@@ -140,9 +130,7 @@ GEOM::GEOM_Object_ptr GEOM_IBooleanOperations_i::MakePartition
   //Get the keep inside shapes
   aLen = theKeepIns.length();
   for (ind = 0; ind < aLen; ind++) {
-    if (theKeepIns[ind] == NULL) return aGEOMObject._retn();
-    Handle(GEOM_Object) aSh = GetOperations()->GetEngine()->GetObject
-      (theKeepIns[ind]->GetStudyID(), theKeepIns[ind]->GetEntry());
+    Handle(GEOM_Object) aSh = GetObjectImpl(theKeepIns[ind]);
     if (aSh.IsNull()) return aGEOMObject._retn();
     aKeepIns->Append(aSh);
   }
@@ -150,9 +138,7 @@ GEOM::GEOM_Object_ptr GEOM_IBooleanOperations_i::MakePartition
   //Get the remove inside shapes
   aLen = theRemoveIns.length();
   for (ind = 0; ind < aLen; ind++) {
-    if (theRemoveIns[ind] == NULL) return aGEOMObject._retn();
-    Handle(GEOM_Object) aSh = GetOperations()->GetEngine()->GetObject
-      (theRemoveIns[ind]->GetStudyID(), theRemoveIns[ind]->GetEntry());
+    Handle(GEOM_Object) aSh = GetObjectImpl(theRemoveIns[ind]);
     if (aSh.IsNull()) return aGEOMObject._retn();
     aRemIns->Append(aSh);
   }
@@ -169,9 +155,9 @@ GEOM::GEOM_Object_ptr GEOM_IBooleanOperations_i::MakePartition
   // Make Partition
   Handle(GEOM_Object) anObject =
     GetOperations()->MakePartition(aShapes, aTools, aKeepIns, aRemIns,
-                                  theLimit, theRemoveWebs, aMaterials,
-                                  theKeepNonlimitShapes,
-                                  /*PerformSelfIntersections*/Standard_True);
+                                   theLimit, theRemoveWebs, aMaterials,
+                                   theKeepNonlimitShapes,
+                                   /*PerformSelfIntersections*/Standard_True);
   if (!GetOperations()->IsDone() || anObject.IsNull())
     return aGEOMObject._retn();
 
@@ -185,13 +171,13 @@ GEOM::GEOM_Object_ptr GEOM_IBooleanOperations_i::MakePartition
 //=============================================================================
 GEOM::GEOM_Object_ptr GEOM_IBooleanOperations_i::MakePartitionNonSelfIntersectedShape
                                       (const GEOM::ListOfGO&   theShapes,
-                                      const GEOM::ListOfGO&   theTools,
-                                      const GEOM::ListOfGO&   theKeepIns,
-                                      const GEOM::ListOfGO&   theRemoveIns,
-                                      CORBA::Short            theLimit,
-                                      CORBA::Boolean          theRemoveWebs,
-                                      const GEOM::ListOfLong& theMaterials,
-                                      CORBA::Short theKeepNonlimitShapes)
+                                       const GEOM::ListOfGO&   theTools,
+                                       const GEOM::ListOfGO&   theKeepIns,
+                                       const GEOM::ListOfGO&   theRemoveIns,
+                                       CORBA::Short            theLimit,
+                                       CORBA::Boolean          theRemoveWebs,
+                                       const GEOM::ListOfLong& theMaterials,
+                                       CORBA::Short theKeepNonlimitShapes)
 {
   GEOM::GEOM_Object_var aGEOMObject;
 
@@ -208,9 +194,7 @@ GEOM::GEOM_Object_ptr GEOM_IBooleanOperations_i::MakePartitionNonSelfIntersected
   //Get the shapes
   aLen = theShapes.length();
   for (ind = 0; ind < aLen; ind++) {
-    if (theShapes[ind] == NULL) return aGEOMObject._retn();
-    Handle(GEOM_Object) aSh = GetOperations()->GetEngine()->GetObject
-      (theShapes[ind]->GetStudyID(), theShapes[ind]->GetEntry());
+    Handle(GEOM_Object) aSh = GetObjectImpl(theShapes[ind]);
     if (aSh.IsNull()) return aGEOMObject._retn();
     aShapes->Append(aSh);
   }
@@ -218,9 +202,7 @@ GEOM::GEOM_Object_ptr GEOM_IBooleanOperations_i::MakePartitionNonSelfIntersected
   //Get the tools
   aLen = theTools.length();
   for (ind = 0; ind < aLen; ind++) {
-    if (theTools[ind] == NULL) return aGEOMObject._retn();
-    Handle(GEOM_Object) aSh = GetOperations()->GetEngine()->GetObject
-      (theTools[ind]->GetStudyID(), theTools[ind]->GetEntry());
+    Handle(GEOM_Object) aSh = GetObjectImpl(theTools[ind]);
     if (aSh.IsNull()) return aGEOMObject._retn();
     aTools->Append(aSh);
   }
@@ -228,9 +210,7 @@ GEOM::GEOM_Object_ptr GEOM_IBooleanOperations_i::MakePartitionNonSelfIntersected
   //Get the keep inside shapes
   aLen = theKeepIns.length();
   for (ind = 0; ind < aLen; ind++) {
-    if (theKeepIns[ind] == NULL) return aGEOMObject._retn();
-    Handle(GEOM_Object) aSh = GetOperations()->GetEngine()->GetObject
-      (theKeepIns[ind]->GetStudyID(), theKeepIns[ind]->GetEntry());
+    Handle(GEOM_Object) aSh = GetObjectImpl(theKeepIns[ind]);
     if (aSh.IsNull()) return aGEOMObject._retn();
     aKeepIns->Append(aSh);
   }
@@ -238,9 +218,7 @@ GEOM::GEOM_Object_ptr GEOM_IBooleanOperations_i::MakePartitionNonSelfIntersected
   //Get the remove inside shapes
   aLen = theRemoveIns.length();
   for (ind = 0; ind < aLen; ind++) {
-    if (theRemoveIns[ind] == NULL) return aGEOMObject._retn();
-    Handle(GEOM_Object) aSh = GetOperations()->GetEngine()->GetObject
-      (theRemoveIns[ind]->GetStudyID(), theRemoveIns[ind]->GetEntry());
+    Handle(GEOM_Object) aSh = GetObjectImpl(theRemoveIns[ind]);
     if (aSh.IsNull()) return aGEOMObject._retn();
     aRemIns->Append(aSh);
   }
@@ -257,9 +235,9 @@ GEOM::GEOM_Object_ptr GEOM_IBooleanOperations_i::MakePartitionNonSelfIntersected
   // Make Partition
   Handle(GEOM_Object) anObject =
     GetOperations()->MakePartition(aShapes, aTools, aKeepIns, aRemIns,
-                                  theLimit, theRemoveWebs, aMaterials,
-                                  theKeepNonlimitShapes,
-                                  /*PerformSelfIntersections*/Standard_False);
+                                   theLimit, theRemoveWebs, aMaterials,
+                                   theKeepNonlimitShapes,
+                                   /*PerformSelfIntersections*/Standard_False);
   if (!GetOperations()->IsDone() || anObject.IsNull())
     return aGEOMObject._retn();
 
@@ -273,20 +251,16 @@ GEOM::GEOM_Object_ptr GEOM_IBooleanOperations_i::MakePartitionNonSelfIntersected
 //=============================================================================
 GEOM::GEOM_Object_ptr GEOM_IBooleanOperations_i::MakeHalfPartition
                                                  (GEOM::GEOM_Object_ptr theShape,
-                                                 GEOM::GEOM_Object_ptr thePlane)
+                                                  GEOM::GEOM_Object_ptr thePlane)
 {
   GEOM::GEOM_Object_var aGEOMObject;
 
   //Set a not done flag
   GetOperations()->SetNotDone();
 
-  if (theShape == NULL || thePlane == NULL) return aGEOMObject._retn();
-
   //Get the reference shapes
-  Handle(GEOM_Object) aSh = GetOperations()->GetEngine()->GetObject
-    (theShape->GetStudyID(), theShape->GetEntry());
-  Handle(GEOM_Object) aPl = GetOperations()->GetEngine()->GetObject
-    (thePlane->GetStudyID(), thePlane->GetEntry());
+  Handle(GEOM_Object) aSh = GetObjectImpl(theShape);
+  Handle(GEOM_Object) aPl = GetObjectImpl(thePlane);
 
   if (aSh.IsNull() || aPl.IsNull()) return aGEOMObject._retn();
 
index 21adb1d0cfccea8e8c416618cacbbab8dc12e164..7709fe40a9c84a8049cdf5e9fdc440dab6b48c96 100644 (file)
@@ -18,7 +18,7 @@
 //  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
 //
 //  See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
-//
+
 #include <Standard_Stream.hxx>
 
 #include "GEOM_ICurvesOperations_i.hh"
@@ -37,8 +37,8 @@ using namespace std;
  */
 //=============================================================================
 GEOM_ICurvesOperations_i::GEOM_ICurvesOperations_i (PortableServer::POA_ptr thePOA,
-                                                   GEOM::GEOM_Gen_ptr theEngine,
-                                                   ::GEOMImpl_ICurvesOperations* theImpl)
+                                                    GEOM::GEOM_Gen_ptr theEngine,
+                                                    ::GEOMImpl_ICurvesOperations* theImpl)
 :GEOM_IOperations_i(thePOA, theEngine, theImpl)
 {
   MESSAGE("GEOM_ICurvesOperations_i::GEOM_ICurvesOperations_i");
@@ -62,20 +62,16 @@ GEOM_ICurvesOperations_i::~GEOM_ICurvesOperations_i()
 //=============================================================================
 GEOM::GEOM_Object_ptr GEOM_ICurvesOperations_i::MakeCirclePntVecR
                       (GEOM::GEOM_Object_ptr thePnt, GEOM::GEOM_Object_ptr theVec,
-                      CORBA::Double theR)
+                       CORBA::Double theR)
 {
   GEOM::GEOM_Object_var aGEOMObject;
 
   //Set a not done flag
   GetOperations()->SetNotDone();
 
-  if (thePnt == NULL || theVec == NULL) return aGEOMObject._retn();
-
   //Get the reference points
-  Handle(GEOM_Object) aPnt = GetOperations()->GetEngine()->GetObject
-    (thePnt->GetStudyID(), thePnt->GetEntry());
-  Handle(GEOM_Object) aVec = GetOperations()->GetEngine()->GetObject
-    (theVec->GetStudyID(), theVec->GetEntry());
+  Handle(GEOM_Object) aPnt = GetObjectImpl(thePnt);
+  Handle(GEOM_Object) aVec = GetObjectImpl(theVec);
 
   if (aPnt.IsNull() || aVec.IsNull()) return aGEOMObject._retn();
 
@@ -95,22 +91,17 @@ GEOM::GEOM_Object_ptr GEOM_ICurvesOperations_i::MakeCirclePntVecR
 //=============================================================================
 GEOM::GEOM_Object_ptr GEOM_ICurvesOperations_i::MakeCircleThreePnt
                       (GEOM::GEOM_Object_ptr thePnt1, GEOM::GEOM_Object_ptr thePnt2,
-                      GEOM::GEOM_Object_ptr thePnt3)
+                       GEOM::GEOM_Object_ptr thePnt3)
 {
   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) aPnt1 = GetOperations()->GetEngine()->GetObject
-    (thePnt1->GetStudyID(), thePnt1->GetEntry());
-  Handle(GEOM_Object) aPnt2 = GetOperations()->GetEngine()->GetObject
-    (thePnt2->GetStudyID(), thePnt2->GetEntry());
-  Handle(GEOM_Object) aPnt3 = GetOperations()->GetEngine()->GetObject
-    (thePnt3->GetStudyID(), thePnt3->GetEntry());
+  Handle(GEOM_Object) aPnt1 = GetObjectImpl(thePnt1);
+  Handle(GEOM_Object) aPnt2 = GetObjectImpl(thePnt2);
+  Handle(GEOM_Object) aPnt3 = GetObjectImpl(thePnt3);
 
   if (aPnt1.IsNull() || aPnt2.IsNull() || aPnt3.IsNull()) return aGEOMObject._retn();
 
@@ -130,22 +121,17 @@ GEOM::GEOM_Object_ptr GEOM_ICurvesOperations_i::MakeCircleThreePnt
 //=============================================================================
 GEOM::GEOM_Object_ptr GEOM_ICurvesOperations_i::MakeCircleCenter2Pnt
                       (GEOM::GEOM_Object_ptr thePnt1, GEOM::GEOM_Object_ptr thePnt2,
-                      GEOM::GEOM_Object_ptr thePnt3)
+                       GEOM::GEOM_Object_ptr thePnt3)
 {
   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) aPnt1 = GetOperations()->GetEngine()->GetObject
-    (thePnt1->GetStudyID(), thePnt1->GetEntry());
-  Handle(GEOM_Object) aPnt2 = GetOperations()->GetEngine()->GetObject
-    (thePnt2->GetStudyID(), thePnt2->GetEntry());
-  Handle(GEOM_Object) aPnt3 = GetOperations()->GetEngine()->GetObject
-    (thePnt3->GetStudyID(), thePnt3->GetEntry());
+  Handle(GEOM_Object) aPnt1 = GetObjectImpl(thePnt1);
+  Handle(GEOM_Object) aPnt2 = GetObjectImpl(thePnt2);
+  Handle(GEOM_Object) aPnt3 = GetObjectImpl(thePnt3);
 
   if (aPnt1.IsNull() || aPnt2.IsNull() || aPnt3.IsNull()) return aGEOMObject._retn();
 
@@ -164,20 +150,16 @@ GEOM::GEOM_Object_ptr GEOM_ICurvesOperations_i::MakeCircleCenter2Pnt
 //=============================================================================
 GEOM::GEOM_Object_ptr GEOM_ICurvesOperations_i::MakeEllipse
                       (GEOM::GEOM_Object_ptr thePnt, GEOM::GEOM_Object_ptr theVec,
-                      CORBA::Double theRMajor, double theRMinor)
+                       CORBA::Double theRMajor, double theRMinor)
 {
   GEOM::GEOM_Object_var aGEOMObject;
 
   //Set a not done flag
   GetOperations()->SetNotDone();
 
-  if (thePnt == NULL || theVec == NULL) return aGEOMObject._retn();
-
   //Get the arguments
-  Handle(GEOM_Object) aPnt = GetOperations()->GetEngine()->GetObject
-    (thePnt->GetStudyID(), thePnt->GetEntry());
-  Handle(GEOM_Object) aVec = GetOperations()->GetEngine()->GetObject
-    (theVec->GetStudyID(), theVec->GetEntry());
+  Handle(GEOM_Object) aPnt = GetObjectImpl(thePnt);
+  Handle(GEOM_Object) aVec = GetObjectImpl(theVec);
   Handle(GEOM_Object) aVecMaj;
 
   if (aPnt.IsNull() || aVec.IsNull()) return aGEOMObject._retn();
@@ -198,8 +180,8 @@ GEOM::GEOM_Object_ptr GEOM_ICurvesOperations_i::MakeEllipse
 //=============================================================================
 GEOM::GEOM_Object_ptr GEOM_ICurvesOperations_i::MakeEllipseVec
                       (GEOM::GEOM_Object_ptr thePnt, GEOM::GEOM_Object_ptr theVec,
-                      CORBA::Double theRMajor, double theRMinor,
-                      GEOM::GEOM_Object_ptr theVecMaj)
+                       CORBA::Double theRMajor, double theRMinor,
+                       GEOM::GEOM_Object_ptr theVecMaj)
 {
   GEOM::GEOM_Object_var aGEOMObject;
 
@@ -207,14 +189,11 @@ GEOM::GEOM_Object_ptr GEOM_ICurvesOperations_i::MakeEllipseVec
   GetOperations()->SetNotDone();
 
   //Get the arguments
-  Handle(GEOM_Object) aPnt = GetOperations()->GetEngine()->GetObject
-    (thePnt->GetStudyID(), thePnt->GetEntry());
-  Handle(GEOM_Object) aVec = GetOperations()->GetEngine()->GetObject
-    (theVec->GetStudyID(), theVec->GetEntry());
+  Handle(GEOM_Object) aPnt = GetObjectImpl(thePnt);
+  Handle(GEOM_Object) aVec = GetObjectImpl(theVec);
   Handle(GEOM_Object) aVecMaj;
   if (!CORBA::is_nil(theVecMaj)) {
-    aVecMaj = GetOperations()->GetEngine()->GetObject
-      (theVecMaj->GetStudyID(), theVecMaj->GetEntry());
+    aVecMaj = GetObjectImpl(theVecMaj);
     if (aVecMaj.IsNull()) return aGEOMObject._retn();
   }
 
@@ -234,23 +213,18 @@ GEOM::GEOM_Object_ptr GEOM_ICurvesOperations_i::MakeEllipseVec
 //=============================================================================
 GEOM::GEOM_Object_ptr GEOM_ICurvesOperations_i::MakeArc
                                                 (GEOM::GEOM_Object_ptr thePnt1,
-                                                GEOM::GEOM_Object_ptr thePnt2,
-                                                GEOM::GEOM_Object_ptr thePnt3)
+                                                 GEOM::GEOM_Object_ptr thePnt2,
+                                                 GEOM::GEOM_Object_ptr thePnt3)
 {
   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) aPnt1 = GetOperations()->GetEngine()->GetObject
-    (thePnt1->GetStudyID(), thePnt1->GetEntry());
-  Handle(GEOM_Object) aPnt2 = GetOperations()->GetEngine()->GetObject
-    (thePnt2->GetStudyID(), thePnt2->GetEntry());
-  Handle(GEOM_Object) aPnt3 = GetOperations()->GetEngine()->GetObject
-    (thePnt3->GetStudyID(), thePnt3->GetEntry());
+  Handle(GEOM_Object) aPnt1 = GetObjectImpl(thePnt1);
+  Handle(GEOM_Object) aPnt2 = GetObjectImpl(thePnt2);
+  Handle(GEOM_Object) aPnt3 = GetObjectImpl(thePnt3);
 
   if (aPnt1.IsNull() || aPnt2.IsNull() || aPnt3.IsNull()) return aGEOMObject._retn();
 
@@ -280,15 +254,10 @@ GEOM::GEOM_Object_ptr GEOM_ICurvesOperations_i::MakeArcCenter
   //Set a not done flag
   GetOperations()->SetNotDone();
 
-  if (thePnt1 == NULL || thePnt2 == NULL || thePnt3 == NULL) return aGEOMObject._retn();
-
   //Get the reference points
-  Handle(GEOM_Object) aPnt1 = GetOperations()->GetEngine()->GetObject
-      (thePnt1->GetStudyID(), thePnt1->GetEntry());
-  Handle(GEOM_Object) aPnt2 = GetOperations()->GetEngine()->GetObject
-      (thePnt2->GetStudyID(), thePnt2->GetEntry());
-  Handle(GEOM_Object) aPnt3 = GetOperations()->GetEngine()->GetObject
-      (thePnt3->GetStudyID(), thePnt3->GetEntry());
+  Handle(GEOM_Object) aPnt1 = GetObjectImpl(thePnt1);
+  Handle(GEOM_Object) aPnt2 = GetObjectImpl(thePnt2);
+  Handle(GEOM_Object) aPnt3 = GetObjectImpl(thePnt3);
 
   if (aPnt1.IsNull() || aPnt2.IsNull() || aPnt3.IsNull()) return aGEOMObject._retn();
 
@@ -300,6 +269,7 @@ GEOM::GEOM_Object_ptr GEOM_ICurvesOperations_i::MakeArcCenter
 
   return GetObject(anObject);
 }
+
 //=============================================================================
 /*!
  *  MakePolyline
@@ -318,11 +288,7 @@ GEOM::GEOM_Object_ptr GEOM_ICurvesOperations_i::MakePolyline
   int aLen = thePoints.length();
   list<Handle(GEOM_Object)> aPoints;
   for (; ind < aLen; ind++) {
-    if (thePoints[ind] == NULL) return aGEOMObject._retn();
-
-    Handle(GEOM_Object) aPnt = GetOperations()->GetEngine()->GetObject
-      (thePoints[ind]->GetStudyID(), thePoints[ind]->GetEntry());
-
+    Handle(GEOM_Object) aPnt = GetObjectImpl(thePoints[ind]);
     if (aPnt.IsNull()) return aGEOMObject._retn();
     aPoints.push_back(aPnt);
   }
@@ -354,11 +320,7 @@ GEOM::GEOM_Object_ptr GEOM_ICurvesOperations_i::MakeSplineBezier
   int aLen = thePoints.length();
   list<Handle(GEOM_Object)> aPoints;
   for (; ind < aLen; ind++) {
-    if (thePoints[ind] == NULL) return aGEOMObject._retn();
-
-    Handle(GEOM_Object) aPnt = GetOperations()->GetEngine()->GetObject
-      (thePoints[ind]->GetStudyID(), thePoints[ind]->GetEntry());
-
+    Handle(GEOM_Object) aPnt = GetObjectImpl(thePoints[ind]);
     if (aPnt.IsNull()) return aGEOMObject._retn();
     aPoints.push_back(aPnt);
   }
@@ -390,11 +352,7 @@ GEOM::GEOM_Object_ptr GEOM_ICurvesOperations_i::MakeSplineInterpolation
   int aLen = thePoints.length();
   list<Handle(GEOM_Object)> aPoints;
   for (; ind < aLen; ind++) {
-    if (thePoints[ind] == NULL) return aGEOMObject._retn();
-
-    Handle(GEOM_Object) aPnt = GetOperations()->GetEngine()->GetObject
-      (thePoints[ind]->GetStudyID(), thePoints[ind]->GetEntry());
-
+    Handle(GEOM_Object) aPnt = GetObjectImpl(thePoints[ind]);
     if (aPnt.IsNull()) return aGEOMObject._retn();
     aPoints.push_back(aPnt);
   }
@@ -446,8 +404,7 @@ GEOM::GEOM_Object_ptr GEOM_ICurvesOperations_i::MakeSketcherOnPlane
   //Set a not done flag
   GetOperations()->SetNotDone();
 
-  Handle(GEOM_Object) aWorkingPlane = GetOperations()->GetEngine()->GetObject
-    (theWorkingPlane->GetStudyID(), theWorkingPlane->GetEntry());
+  Handle(GEOM_Object) aWorkingPlane = GetObjectImpl(theWorkingPlane);
 
   // Make Sketcher
   Handle(GEOM_Object) anObject =
index 7f87d4ac4887bc089f8870922a18ce5d520ee355..ec64e411c63b96c1b5ba983169713bb5ab00666f 100644 (file)
@@ -18,7 +18,7 @@
 //  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
 //
 //  See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
-//
+
 #include <Standard_Stream.hxx>
 
 #include "GEOM_IGroupOperations_i.hh"
@@ -39,8 +39,8 @@
  */
 //=============================================================================
 GEOM_IGroupOperations_i::GEOM_IGroupOperations_i (PortableServer::POA_ptr thePOA,
-                                                 GEOM::GEOM_Gen_ptr theEngine,
-                                                 ::GEOMImpl_IGroupOperations* theImpl)
+                                                  GEOM::GEOM_Gen_ptr theEngine,
+                                                  ::GEOMImpl_IGroupOperations* theImpl)
      :GEOM_IOperations_i(thePOA, theEngine, theImpl)
 {
   MESSAGE("GEOM_IGroupOperations_i::GEOM_IGroupOperations_i");
@@ -61,19 +61,19 @@ GEOM_IGroupOperations_i::~GEOM_IGroupOperations_i()
 /*!
  *  CreateGroup
  */
-//============================================================================= 
-GEOM::GEOM_Object_ptr GEOM_IGroupOperations_i::CreateGroup(GEOM::GEOM_Object_ptr theMainShape, CORBA::Long theShapeType)
+//=============================================================================
+GEOM::GEOM_Object_ptr GEOM_IGroupOperations_i::CreateGroup(GEOM::GEOM_Object_ptr theMainShape,
+                                                           CORBA::Long theShapeType)
 {
   GEOM::GEOM_Object_var aGEOMObject;
 
   //Set a not done flag
   GetOperations()->SetNotDone();
 
-  if (theMainShape == NULL || theShapeType < 0) return aGEOMObject._retn();
+  if (theShapeType < 0) return aGEOMObject._retn();
 
   //Get the reference shape
-  Handle(GEOM_Object) aShapeRef = GetOperations()->GetEngine()->GetObject(theMainShape->GetStudyID(), theMainShape->GetEntry());
-
+  Handle(GEOM_Object) aShapeRef = GetObjectImpl(theMainShape);
   if (aShapeRef.IsNull()) return aGEOMObject._retn();
 
   //Create the Fillet
@@ -89,40 +89,33 @@ GEOM::GEOM_Object_ptr GEOM_IGroupOperations_i::CreateGroup(GEOM::GEOM_Object_ptr
  *  AddObject
  */
 //=============================================================================
-void GEOM_IGroupOperations_i::AddObject(GEOM::GEOM_Object_ptr theGroup, CORBA::Long theSubShapeId) 
+void GEOM_IGroupOperations_i::AddObject(GEOM::GEOM_Object_ptr theGroup, CORBA::Long theSubShapeId)
 {
   //Set a not done flag
   GetOperations()->SetNotDone();
 
-  if (theGroup == NULL) return;
-
   //Get the reference group
-  Handle(GEOM_Object) aGroupRef = GetOperations()->GetEngine()->GetObject(theGroup->GetStudyID(), theGroup->GetEntry());
+  Handle(GEOM_Object) aGroupRef = GetObjectImpl(theGroup);
   if (aGroupRef.IsNull()) return;
 
   GetOperations()->AddObject(aGroupRef, theSubShapeId);
-  return;
 }
 
 //=============================================================================
 /*!
  *  RemoveObject
  */
-//============================================================================= 
-void GEOM_IGroupOperations_i::RemoveObject(GEOM::GEOM_Object_ptr theGroup, CORBA::Long theSubShapeId) 
+//=============================================================================
+void GEOM_IGroupOperations_i::RemoveObject(GEOM::GEOM_Object_ptr theGroup, CORBA::Long theSubShapeId)
 {
   //Set a not done flag
   GetOperations()->SetNotDone();
 
-  if (theGroup == NULL) return;
-
   //Get the reference group
-  Handle(GEOM_Object) aGroupRef = GetOperations()->GetEngine()->GetObject(theGroup->GetStudyID(), theGroup->GetEntry());
+  Handle(GEOM_Object) aGroupRef = GetObjectImpl(theGroup);
   if (aGroupRef.IsNull()) return;
 
   GetOperations()->RemoveObject(aGroupRef, theSubShapeId);
-
-  return;
 }
 
 //=============================================================================
@@ -131,16 +124,13 @@ void GEOM_IGroupOperations_i::RemoveObject(GEOM::GEOM_Object_ptr theGroup, CORBA
  */
 //=============================================================================
 void GEOM_IGroupOperations_i::UnionList (GEOM::GEOM_Object_ptr theGroup,
-                                        const GEOM::ListOfGO& theSubShapes) 
+                                         const GEOM::ListOfGO& theSubShapes)
 {
   //Set a not done flag
   GetOperations()->SetNotDone();
 
-  if (theGroup == NULL) return;
-
   //Get the reference group
-  Handle(GEOM_Object) aGroupRef = GetOperations()->GetEngine()->GetObject
-    (theGroup->GetStudyID(), theGroup->GetEntry());
+  Handle(GEOM_Object) aGroupRef = GetObjectImpl(theGroup);
   if (aGroupRef.IsNull()) return;
 
   //Get sub-shape to add
@@ -148,16 +138,13 @@ void GEOM_IGroupOperations_i::UnionList (GEOM::GEOM_Object_ptr theGroup,
 
   int ind, aLen = theSubShapes.length();
   for (ind = 0; ind < aLen; ind++) {
-    if (theSubShapes[ind] == NULL) return;
-    Handle(GEOM_Object) aSh = GetOperations()->GetEngine()->GetObject
-      (theSubShapes[ind]->GetStudyID(), theSubShapes[ind]->GetEntry());
+    Handle(GEOM_Object) aSh = GetObjectImpl(theSubShapes[ind]);
     if (aSh.IsNull()) return;
     aSubShapes->Append(aSh);
   }
 
   //Perform the operation
   GetOperations()->UnionList(aGroupRef, aSubShapes);
-  return;
 }
 
 //=============================================================================
@@ -166,16 +153,13 @@ void GEOM_IGroupOperations_i::UnionList (GEOM::GEOM_Object_ptr theGroup,
  */
 //=============================================================================
 void GEOM_IGroupOperations_i::DifferenceList (GEOM::GEOM_Object_ptr theGroup,
-                                             const GEOM::ListOfGO& theSubShapes) 
+                                              const GEOM::ListOfGO& theSubShapes)
 {
   //Set a not done flag
   GetOperations()->SetNotDone();
 
-  if (theGroup == NULL) return;
-
   //Get the reference group
-  Handle(GEOM_Object) aGroupRef = GetOperations()->GetEngine()->GetObject
-    (theGroup->GetStudyID(), theGroup->GetEntry());
+  Handle(GEOM_Object) aGroupRef = GetObjectImpl(theGroup);
   if (aGroupRef.IsNull()) return;
 
   //Get sub-shape to remove
@@ -183,16 +167,13 @@ void GEOM_IGroupOperations_i::DifferenceList (GEOM::GEOM_Object_ptr theGroup,
 
   int ind, aLen = theSubShapes.length();
   for (ind = 0; ind < aLen; ind++) {
-    if (theSubShapes[ind] == NULL) return;
-    Handle(GEOM_Object) aSh = GetOperations()->GetEngine()->GetObject
-      (theSubShapes[ind]->GetStudyID(), theSubShapes[ind]->GetEntry());
+    Handle(GEOM_Object) aSh = GetObjectImpl(theSubShapes[ind]);
     if (aSh.IsNull()) return;
     aSubShapes->Append(aSh);
   }
 
   //Perform the operation
   GetOperations()->DifferenceList(aGroupRef, aSubShapes);
-  return;
 }
 
 //=============================================================================
@@ -201,16 +182,13 @@ void GEOM_IGroupOperations_i::DifferenceList (GEOM::GEOM_Object_ptr theGroup,
  */
 //=============================================================================
 void GEOM_IGroupOperations_i::UnionIDs (GEOM::GEOM_Object_ptr   theGroup,
-                                       const GEOM::ListOfLong& theSubShapes) 
+                                        const GEOM::ListOfLong& theSubShapes)
 {
   //Set a not done flag
   GetOperations()->SetNotDone();
 
-  if (theGroup == NULL) return;
-
   //Get the reference group
-  Handle(GEOM_Object) aGroupRef = GetOperations()->GetEngine()->GetObject
-    (theGroup->GetStudyID(), theGroup->GetEntry());
+  Handle(GEOM_Object) aGroupRef = GetObjectImpl(theGroup);
   if (aGroupRef.IsNull()) return;
 
   //Get sub-shape to add
@@ -232,16 +210,13 @@ void GEOM_IGroupOperations_i::UnionIDs (GEOM::GEOM_Object_ptr   theGroup,
  */
 //=============================================================================
 void GEOM_IGroupOperations_i::DifferenceIDs (GEOM::GEOM_Object_ptr   theGroup,
-                                            const GEOM::ListOfLong& theSubShapes) 
+                                             const GEOM::ListOfLong& theSubShapes)
 {
   //Set a not done flag
   GetOperations()->SetNotDone();
 
-  if (theGroup == NULL) return;
-
   //Get the reference group
-  Handle(GEOM_Object) aGroupRef = GetOperations()->GetEngine()->GetObject
-    (theGroup->GetStudyID(), theGroup->GetEntry());
+  Handle(GEOM_Object) aGroupRef = GetObjectImpl(theGroup);
   if (aGroupRef.IsNull()) return;
 
   //Get sub-shape to remove
@@ -261,17 +236,14 @@ void GEOM_IGroupOperations_i::DifferenceIDs (GEOM::GEOM_Object_ptr   theGroup,
 /*!
  *  GetType
  */
-//============================================================================= 
+//=============================================================================
 CORBA::Long GEOM_IGroupOperations_i::GetType(GEOM::GEOM_Object_ptr theGroup)
 {
   //Set a not done flag
   GetOperations()->SetNotDone();
 
-  if (theGroup == NULL) return -1;
-
   //Get the reference group
-  Handle(GEOM_Object) aGroupRef = GetOperations()->GetEngine()->GetObject(theGroup->GetStudyID(), theGroup->GetEntry());
-
+  Handle(GEOM_Object) aGroupRef = GetObjectImpl(theGroup);
   if (aGroupRef.IsNull()) return -1;
 
   return GetOperations()->GetType(aGroupRef);
@@ -281,7 +253,7 @@ CORBA::Long GEOM_IGroupOperations_i::GetType(GEOM::GEOM_Object_ptr theGroup)
 /*!
  *  GetMainShape
  */
-//============================================================================= 
+//=============================================================================
 GEOM::GEOM_Object_ptr GEOM_IGroupOperations_i::GetMainShape(GEOM::GEOM_Object_ptr theGroup)
 {
   GEOM::GEOM_Object_var aGEOMObject;
@@ -289,10 +261,8 @@ GEOM::GEOM_Object_ptr GEOM_IGroupOperations_i::GetMainShape(GEOM::GEOM_Object_pt
   //Set a not done flag
   GetOperations()->SetNotDone();
 
-  if (theGroup == NULL) return aGEOMObject._retn();
-
   //Get the reference group
-  Handle(GEOM_Object) aGroupRef = GetOperations()->GetEngine()->GetObject(theGroup->GetStudyID(), theGroup->GetEntry());
+  Handle(GEOM_Object) aGroupRef = GetObjectImpl(theGroup);
   if (aGroupRef.IsNull()) return aGEOMObject._retn();
 
   Handle(GEOM_Object) anObject = GetOperations()->GetMainShape(aGroupRef);
@@ -305,7 +275,7 @@ GEOM::GEOM_Object_ptr GEOM_IGroupOperations_i::GetMainShape(GEOM::GEOM_Object_pt
 /*!
  *  GetObjects
  */
-//============================================================================= 
+//=============================================================================
 GEOM::ListOfLong* GEOM_IGroupOperations_i::GetObjects(GEOM::GEOM_Object_ptr theGroup)
 {
   GEOM::ListOfLong_var aList;
@@ -313,20 +283,17 @@ GEOM::ListOfLong* GEOM_IGroupOperations_i::GetObjects(GEOM::GEOM_Object_ptr theG
   //Set a not done flag
   GetOperations()->SetNotDone();
 
-  if (theGroup == NULL) return aList._retn();
-
   //Get the reference group
-  Handle(GEOM_Object) aGroupRef = GetOperations()->GetEngine()->GetObject(theGroup->GetStudyID(), theGroup->GetEntry());
+  Handle(GEOM_Object) aGroupRef = GetObjectImpl(theGroup);
   if (aGroupRef.IsNull()) return aList._retn();
 
-  aList = new GEOM::ListOfLong;    
+  aList = new GEOM::ListOfLong;
 
   Handle(TColStd_HArray1OfInteger) aSeq = GetOperations()->GetObjects(aGroupRef);
   if (!GetOperations()->IsDone() || aSeq.IsNull()) return aList._retn();
-    
+
   aList->length(aSeq->Length());
   for(int i = 1; i<=aSeq->Length(); i++) aList[i-1] = aSeq->Value(i);
 
   return aList._retn();
 }
-
index 5c6dcb4469054f75a803df7918caaa9e6d0eb8e9..44e11109b2e0b4e7afd5caca20d17f78a6772727 100644 (file)
@@ -18,7 +18,7 @@
 //  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
 //
 //  See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
-//
+
 #include <Standard_Stream.hxx>
 
 #include <list>
@@ -42,8 +42,8 @@ using namespace std;
 //=============================================================================
 
 GEOM_IHealingOperations_i::GEOM_IHealingOperations_i (PortableServer::POA_ptr thePOA,
-                                                     GEOM::GEOM_Gen_ptr theEngine,
-                                                     ::GEOMImpl_IHealingOperations* theImpl)
+                                                      GEOM::GEOM_Gen_ptr theEngine,
+                                                      ::GEOMImpl_IHealingOperations* theImpl)
 :GEOM_IOperations_i(thePOA, theEngine, theImpl)
 {
   MESSAGE("GEOM_IHealingOperations_i::GEOM_IHealingOperations_i");
@@ -106,27 +106,22 @@ Handle(TColStd_HArray1OfExtendedString) GEOM_IHealingOperations_i::Convert
  */
 //=============================================================================
 GEOM::GEOM_Object_ptr GEOM_IHealingOperations_i::ProcessShape (GEOM::GEOM_Object_ptr theObject,
-                                                              const GEOM::string_array& theOperations,
-                                                              const GEOM::string_array& theParams,
-                                                              const GEOM::string_array& theValues)
+                                                               const GEOM::string_array& theOperations,
+                                                               const GEOM::string_array& theParams,
+                                                               const GEOM::string_array& theValues)
 {
   GEOM::GEOM_Object_var aGEOMObject;
 
   // Set a not done flag
   GetOperations()->SetNotDone();
 
-  // Check parameters
-  if ( CORBA::is_nil(theObject) )
-    return aGEOMObject._retn();
-
   // Check if theOperations has more than 0 elements and theParams and theValues have the same length
-//  if ( theOperations.length() <= 0 || theParams.length() != theValues.length() )
-//    return aGEOMObject._retn();
+  //if (theOperations.length() <= 0 || theParams.length() != theValues.length())
+  //  return aGEOMObject._retn();
 
   // Get the object itself
-  Handle(GEOM_Object) anObject =
-    GetOperations()->GetEngine()->GetObject(theObject->GetStudyID(), theObject->GetEntry());
-  if ( anObject.IsNull() )
+  Handle(GEOM_Object) anObject = GetObjectImpl(theObject);
+  if (anObject.IsNull())
     return aGEOMObject._retn();
 
   // Perform
@@ -171,7 +166,7 @@ void GEOM_IHealingOperations_i::GetShapeProcessParameters(GEOM::string_array_out
       anOpArray[i] = CORBA::string_dup( (*opIt).c_str() );
 
     for ( i = 0, parIt = paramsList.begin(), valIt = valuesList.begin();
-         parIt != paramsList.end(); i++, ++parIt,++valIt ) {
+          parIt != paramsList.end(); i++, ++parIt,++valIt ) {
       aParArray[i] = CORBA::string_dup( (*parIt).c_str() );
       aValArray[i] = CORBA::string_dup( (*valIt).c_str() );
     }
@@ -188,9 +183,9 @@ void GEOM_IHealingOperations_i::GetShapeProcessParameters(GEOM::string_array_out
  *  GetOperatorParameters
  */
 //=============================================================================
-void GEOM_IHealingOperations_i::GetOperatorParameters (const char* theOperator,  
-                                                      GEOM::string_array_out theParams, 
-                                                      GEOM::string_array_out theValues)
+void GEOM_IHealingOperations_i::GetOperatorParameters (const char* theOperator,
+                                                       GEOM::string_array_out theParams,
+                                                       GEOM::string_array_out theValues)
 {
   GEOM::string_array_var aParArray = new GEOM::string_array();
   GEOM::string_array_var aValArray = new GEOM::string_array();
@@ -209,8 +204,8 @@ void GEOM_IHealingOperations_i::GetOperatorParameters (const char* theOperator,
       int i;
       for ( i = 0, parIt = paramsList.begin(), valIt = valuesList.begin();
             parIt != paramsList.end(); i++, ++parIt,++valIt ) {
-       aParArray[i] = CORBA::string_dup( (*parIt).c_str() );
-       aValArray[i] = CORBA::string_dup( (*valIt).c_str() );
+        aParArray[i] = CORBA::string_dup( (*parIt).c_str() );
+        aValArray[i] = CORBA::string_dup( (*valIt).c_str() );
       }
     }
   }
@@ -226,23 +221,20 @@ void GEOM_IHealingOperations_i::GetOperatorParameters (const char* theOperator,
  */
 //=============================================================================
 GEOM::GEOM_Object_ptr GEOM_IHealingOperations_i::SuppressFaces (GEOM::GEOM_Object_ptr theObject,
-                                                               const GEOM::short_array& theFaces)
+                                                                const GEOM::short_array& theFaces)
 {
   GEOM::GEOM_Object_var aGEOMObject;
 
   // Set a not done flag
   GetOperations()->SetNotDone();
 
-  // Check parameters
-  if ( CORBA::is_nil(theObject) ) // if theFaces is empty - it's OK, it means that ALL faces must be removed
-    return aGEOMObject._retn();
-
   // Get the object itself
-  Handle(GEOM_Object) anObject =
-    GetOperations()->GetEngine()->GetObject(theObject->GetStudyID(), theObject->GetEntry());
+  Handle(GEOM_Object) anObject = GetObjectImpl(theObject);
   if (anObject.IsNull())
     return aGEOMObject._retn();
 
+  // if theFaces is empty - it's OK, it means that ALL faces must be removed
+
   // Perform
   Handle(GEOM_Object) aNewObject =
     GetOperations()->SuppressFaces( anObject, Convert( theFaces ) );
@@ -258,21 +250,16 @@ GEOM::GEOM_Object_ptr GEOM_IHealingOperations_i::SuppressFaces (GEOM::GEOM_Objec
  */
 //=============================================================================
 GEOM::GEOM_Object_ptr GEOM_IHealingOperations_i::CloseContour (GEOM::GEOM_Object_ptr theObject,
-                                                              const GEOM::short_array& theWires,
-                                                              CORBA::Boolean isCommonVertex)
+                                                               const GEOM::short_array& theWires,
+                                                               CORBA::Boolean isCommonVertex)
 {
   GEOM::GEOM_Object_var aGEOMObject;
 
   // Set a not done flag
   GetOperations()->SetNotDone();
 
-  // Check parameters
-  if ( CORBA::is_nil(theObject) )
-    return aGEOMObject._retn();
-
   // Get the object itself
-  Handle(GEOM_Object) anObject =
-    GetOperations()->GetEngine()->GetObject(theObject->GetStudyID(), theObject->GetEntry());
+  Handle(GEOM_Object) anObject = GetObjectImpl(theObject);
   if (anObject.IsNull())
     return aGEOMObject._retn();
 
@@ -291,23 +278,20 @@ GEOM::GEOM_Object_ptr GEOM_IHealingOperations_i::CloseContour (GEOM::GEOM_Object
  */
 //=============================================================================
 GEOM::GEOM_Object_ptr GEOM_IHealingOperations_i::RemoveIntWires (GEOM::GEOM_Object_ptr theObject,
-                                                                const GEOM::short_array& theWires)
+                                                                 const GEOM::short_array& theWires)
 {
   GEOM::GEOM_Object_var aGEOMObject;
 
   // Set a not done flag
   GetOperations()->SetNotDone();
 
-  // Check parameters
-  if ( CORBA::is_nil(theObject) ) // if theWires is empty - it's OK, it means that ALL wires should be removed
-    return aGEOMObject._retn();
-
   // Get the object itself
-  Handle(GEOM_Object) anObject =
-    GetOperations()->GetEngine()->GetObject(theObject->GetStudyID(), theObject->GetEntry());
+  Handle(GEOM_Object) anObject = GetObjectImpl(theObject);
   if (anObject.IsNull())
     return aGEOMObject._retn();
 
+  // if theWires is empty - it's OK, it means that ALL wires should be removed
+
   // Perform
   Handle(GEOM_Object) aNewObject =
     GetOperations()->RemoveIntWires( anObject, Convert( theWires ) );
@@ -323,23 +307,20 @@ GEOM::GEOM_Object_ptr GEOM_IHealingOperations_i::RemoveIntWires (GEOM::GEOM_Obje
  */
 //=============================================================================
 GEOM::GEOM_Object_ptr GEOM_IHealingOperations_i::FillHoles (GEOM::GEOM_Object_ptr theObject,
-                                                           const GEOM::short_array& theWires)
+                                                            const GEOM::short_array& theWires)
 {
   GEOM::GEOM_Object_var aGEOMObject;
 
   // Set a not done flag
   GetOperations()->SetNotDone();
 
-  // Check parameters
-  if ( CORBA::is_nil(theObject) ) // if theWires is empty - it's OK, it means that ALL wires should be removed
-    return aGEOMObject._retn();
-
   // Get the object itself
-  Handle(GEOM_Object) anObject =
-    GetOperations()->GetEngine()->GetObject(theObject->GetStudyID(), theObject->GetEntry());
+  Handle(GEOM_Object) anObject = GetObjectImpl(theObject);
   if (anObject.IsNull())
     return aGEOMObject._retn();
 
+  // if theWires is empty - it's OK, it means that ALL wires should be removed
+
   // Perform
   Handle(GEOM_Object) aNewObject =
     GetOperations()->FillHoles( anObject, Convert( theWires ) );
@@ -355,7 +336,7 @@ GEOM::GEOM_Object_ptr GEOM_IHealingOperations_i::FillHoles (GEOM::GEOM_Object_pt
  */
 //=============================================================================
 GEOM::GEOM_Object_ptr GEOM_IHealingOperations_i::Sew (GEOM::GEOM_Object_ptr theObject,
-                                                     CORBA::Double theTolerance)
+                                                      CORBA::Double theTolerance)
 {
   GEOM::GEOM_Object_var aGEOMObject;
 
@@ -363,12 +344,11 @@ GEOM::GEOM_Object_ptr GEOM_IHealingOperations_i::Sew (GEOM::GEOM_Object_ptr theO
   GetOperations()->SetNotDone();
 
   // Check parameters
-  if ( CORBA::is_nil(theObject) || theTolerance < 0 )
+  if (theTolerance < 0)
     return aGEOMObject._retn();
 
   // Get the object itself
-  Handle(GEOM_Object) anObject =
-    GetOperations()->GetEngine()->GetObject(theObject->GetStudyID(), theObject->GetEntry());
+  Handle(GEOM_Object) anObject = GetObjectImpl(theObject);
   if (anObject.IsNull())
     return aGEOMObject._retn();
 
@@ -388,8 +368,8 @@ GEOM::GEOM_Object_ptr GEOM_IHealingOperations_i::Sew (GEOM::GEOM_Object_ptr theO
 //=============================================================================
 GEOM::GEOM_Object_ptr GEOM_IHealingOperations_i::DivideEdge (GEOM::GEOM_Object_ptr theObject,
                                                              CORBA::Short theIndex,
-                                                            CORBA::Double theValue,
-                                                            CORBA::Boolean isByParameter)
+                                                             CORBA::Double theValue,
+                                                             CORBA::Boolean isByParameter)
 {
   GEOM::GEOM_Object_var aGEOMObject;
 
@@ -397,12 +377,11 @@ GEOM::GEOM_Object_ptr GEOM_IHealingOperations_i::DivideEdge (GEOM::GEOM_Object_p
   GetOperations()->SetNotDone();
 
   // Check parameters
-  if ( CORBA::is_nil(theObject) || theValue < 0 || theValue > 1 )
+  if (theValue < 0 || theValue > 1)
     return aGEOMObject._retn();
 
   // Get the object itself
-  Handle(GEOM_Object) anObject =
-    GetOperations()->GetEngine()->GetObject(theObject->GetStudyID(), theObject->GetEntry());
+  Handle(GEOM_Object) anObject = GetObjectImpl(theObject);
   if (anObject.IsNull())
     return aGEOMObject._retn();
 
@@ -421,8 +400,8 @@ GEOM::GEOM_Object_ptr GEOM_IHealingOperations_i::DivideEdge (GEOM::GEOM_Object_p
  */
 //=============================================================================
 CORBA::Boolean GEOM_IHealingOperations_i::GetFreeBoundary ( GEOM::GEOM_Object_ptr theObject,
-                                                           GEOM::ListOfGO_out theClosedWires,
-                                                           GEOM::ListOfGO_out theOpenWires )
+                                                            GEOM::ListOfGO_out theClosedWires,
+                                                            GEOM::ListOfGO_out theOpenWires )
 {
   theClosedWires = new GEOM::ListOfGO;
   theOpenWires = new GEOM::ListOfGO;
@@ -430,12 +409,8 @@ CORBA::Boolean GEOM_IHealingOperations_i::GetFreeBoundary ( GEOM::GEOM_Object_pt
   // Set a not done flag
   GetOperations()->SetNotDone();
 
-  if ( CORBA::is_nil(theObject) )
-       return false;
-
   // Get the object itself
-  Handle(GEOM_Object) anObject =
-    GetOperations()->GetEngine()->GetObject(theObject->GetStudyID(), theObject->GetEntry());
+  Handle(GEOM_Object) anObject = GetObjectImpl(theObject);
   if (anObject.IsNull())
     return false;
 
@@ -444,7 +419,7 @@ CORBA::Boolean GEOM_IHealingOperations_i::GetFreeBoundary ( GEOM::GEOM_Object_pt
   bool res = GetOperations()->GetFreeBoundary( anObject, aClosed, anOpen );
 
   if ( !GetOperations()->IsDone() || !res )
-       return false;
+    return false;
 
   int i, n = aClosed->Length();
   theClosedWires->length( n );
@@ -479,8 +454,7 @@ GEOM::GEOM_Object_ptr GEOM_IHealingOperations_i::ChangeOrientation (GEOM::GEOM_O
   aGEOMObject = GEOM::GEOM_Object::_duplicate(theObject);
 
   // Get the object itself
-  Handle(GEOM_Object) anObject =
-    GetOperations()->GetEngine()->GetObject(theObject->GetStudyID(), theObject->GetEntry());
+  Handle(GEOM_Object) anObject = GetObjectImpl(theObject);
   if (anObject.IsNull())
     return aGEOMObject._retn();
 
@@ -491,7 +465,7 @@ GEOM::GEOM_Object_ptr GEOM_IHealingOperations_i::ChangeOrientation (GEOM::GEOM_O
 //    return aGEOMObject._retn();
 
   //return GetObject(aNewObject);
-  return aGEOMObject._retn();  
+  return aGEOMObject._retn();
 }
 
 
@@ -507,13 +481,8 @@ GEOM::GEOM_Object_ptr GEOM_IHealingOperations_i::ChangeOrientationCopy (GEOM::GE
   // Set a not done flag
   GetOperations()->SetNotDone();
 
-  // Check parameters
-  if ( CORBA::is_nil(theObject) )
-    return aGEOMObject._retn();
-
   // Get the object itself
-  Handle(GEOM_Object) anObject =
-    GetOperations()->GetEngine()->GetObject(theObject->GetStudyID(), theObject->GetEntry());
+  Handle(GEOM_Object) anObject = GetObjectImpl(theObject);
   if (anObject.IsNull())
     return aGEOMObject._retn();
 
@@ -525,4 +494,3 @@ GEOM::GEOM_Object_ptr GEOM_IHealingOperations_i::ChangeOrientationCopy (GEOM::GE
 
   return GetObject(aNewObject);
 }
-
index a0145517c5dcec84d9466d3542749283a9fa9374..832b8df27bef26cff4f9a431d582e4f64e2ac2c5 100644 (file)
@@ -18,7 +18,7 @@
 //  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
 //
 //  See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
-//
+
 #ifdef WNT
 #pragma warning( disable:4786 )
 #endif
@@ -42,8 +42,8 @@
  */
 //=============================================================================
 GEOM_IInsertOperations_i::GEOM_IInsertOperations_i (PortableServer::POA_ptr thePOA,
-                                                   GEOM::GEOM_Gen_ptr theEngine,
-                                                   ::GEOMImpl_IInsertOperations* theImpl)
+                                                    GEOM::GEOM_Gen_ptr theEngine,
+                                                    ::GEOMImpl_IInsertOperations* theImpl)
      :GEOM_IOperations_i(thePOA, theEngine, theImpl)
 {
   MESSAGE("GEOM_IInsertOperations_i::GEOM_IInsertOperations_i");
@@ -72,13 +72,8 @@ GEOM::GEOM_Object_ptr GEOM_IInsertOperations_i::MakeCopy(GEOM::GEOM_Object_ptr t
   //Set a not done flag
   GetOperations()->SetNotDone();
 
-  if (theOriginal == NULL) return aGEOMObject._retn();
-
   //Get the reference shape
-  Handle(GEOM_Object) anOriginal =
-    GetOperations()->GetEngine()->GetObject(theOriginal->GetStudyID(),
-                                           theOriginal->GetEntry());
-
+  Handle(GEOM_Object) anOriginal = GetObjectImpl(theOriginal);
   if (anOriginal.IsNull()) return aGEOMObject._retn();
 
   //Create the copy
@@ -96,21 +91,16 @@ GEOM::GEOM_Object_ptr GEOM_IInsertOperations_i::MakeCopy(GEOM::GEOM_Object_ptr t
 //=============================================================================
 void GEOM_IInsertOperations_i::Export
                    (GEOM::GEOM_Object_ptr theOriginal,
-                   const char*           theFileName,
-                   const char*           theFormatName)
+                    const char*           theFileName,
+                    const char*           theFormatName)
 {
   GEOM::GEOM_Object_var aGEOMObject = GEOM::GEOM_Object::_duplicate(theOriginal);
 
   //Set a not done flag
   GetOperations()->SetNotDone();
 
-  if (theOriginal == NULL) return;
-
   //Get the reference shape
-  Handle(GEOM_Object) anOriginal =
-    GetOperations()->GetEngine()->GetObject(theOriginal->GetStudyID(),
-                                           theOriginal->GetEntry());
-
+  Handle(GEOM_Object) anOriginal = GetObjectImpl(theOriginal);
   if (anOriginal.IsNull()) return;
 
   //Export the shape to the file
@@ -119,8 +109,6 @@ void GEOM_IInsertOperations_i::Export
   GetOperations()->Export(anOriginal, aFileName, aFormatName);
   free(aFileName);
   free(aFormatName);
-
-  return;
 }
 
 //=============================================================================
@@ -130,7 +118,7 @@ void GEOM_IInsertOperations_i::Export
 //=============================================================================
 GEOM::GEOM_Object_ptr GEOM_IInsertOperations_i::Import
                    (const char* theFileName,
-                   const char* theFormatName)
+                    const char* theFormatName)
 {
   GEOM::GEOM_Object_var aGEOMObject;
 
@@ -174,8 +162,8 @@ void GEOM_IInsertOperations_i::ImportTranslators
       // fill the local CORBA arrays with values from sequences
       CORBA::Long i = 1;
       for (; i <= formSize; i++) {
-       aFormatsArray[i-1]  = CORBA::string_dup(aFormats->Value(i).ToCString());
-       aPatternsArray[i-1] = CORBA::string_dup(aPatterns->Value(i).ToCString());
+        aFormatsArray[i-1]  = CORBA::string_dup(aFormats->Value(i).ToCString());
+        aPatternsArray[i-1] = CORBA::string_dup(aPatterns->Value(i).ToCString());
       }
     }
   }
@@ -209,8 +197,8 @@ void GEOM_IInsertOperations_i::ExportTranslators
       // fill the local CORBA arrays with values from sequences
       CORBA::Long i = 1;
       for (; i <= formSize; i++) {
-       aFormatsArray[i-1]  = CORBA::string_dup(aFormats->Value(i).ToCString());
-       aPatternsArray[i-1] = CORBA::string_dup(aPatterns->Value(i).ToCString());
+        aFormatsArray[i-1]  = CORBA::string_dup(aFormats->Value(i).ToCString());
+        aPatternsArray[i-1] = CORBA::string_dup(aPatterns->Value(i).ToCString());
       }
     }
   }
index d9677ba1584ab0041a00dc2e1eacb0f7ad8af95d..ee30e8d3c97a35193e55433891405b64aeb40a60 100644 (file)
@@ -18,7 +18,7 @@
 //  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
 //
 //  See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
-//
+
 #include <Standard_Stream.hxx>
 
 #include "GEOM_ILocalOperations_i.hh"
@@ -38,8 +38,8 @@ using namespace std;
  */
 //=============================================================================
 GEOM_ILocalOperations_i::GEOM_ILocalOperations_i (PortableServer::POA_ptr thePOA,
-                                                 GEOM::GEOM_Gen_ptr theEngine,
-                                                 ::GEOMImpl_ILocalOperations* theImpl)
+                                                  GEOM::GEOM_Gen_ptr theEngine,
+                                                  ::GEOMImpl_ILocalOperations* theImpl)
      :GEOM_IOperations_i(thePOA, theEngine, theImpl)
 {
   MESSAGE("GEOM_ILocalOperations_i::GEOM_ILocalOperations_i");
@@ -66,12 +66,8 @@ GEOM::GEOM_Object_ptr GEOM_ILocalOperations_i::MakeFilletAll
 {
   GEOM::GEOM_Object_var aGEOMObject;
 
-  if (theShape == NULL) return aGEOMObject._retn();
-
   //Get the reference shape
-  Handle(GEOM_Object) aShapeRef = GetOperations()->GetEngine()->GetObject
-    (theShape->GetStudyID(), theShape->GetEntry());
-
+  Handle(GEOM_Object) aShapeRef = GetObjectImpl(theShape);
   if (aShapeRef.IsNull()) return aGEOMObject._retn();
 
   //Create the Fillet
@@ -90,15 +86,12 @@ GEOM::GEOM_Object_ptr GEOM_ILocalOperations_i::MakeFilletAll
 //=============================================================================
 GEOM::GEOM_Object_ptr GEOM_ILocalOperations_i::MakeFilletEdges
                       (GEOM::GEOM_Object_ptr theShape, CORBA::Double theR,
-                      const GEOM::ListOfLong& theEdges)
+                       const GEOM::ListOfLong& theEdges)
 {
   GEOM::GEOM_Object_var aGEOMObject;
 
-  if (theShape == NULL) return aGEOMObject._retn();
-
   //Get the reference shape
-  Handle(GEOM_Object) aShapeRef = GetOperations()->GetEngine()->GetObject
-    (theShape->GetStudyID(), theShape->GetEntry());
+  Handle(GEOM_Object) aShapeRef = GetObjectImpl(theShape);
   if (aShapeRef.IsNull()) return aGEOMObject._retn();
 
   //Get the reference edges
@@ -129,11 +122,8 @@ GEOM::GEOM_Object_ptr GEOM_ILocalOperations_i::MakeFilletEdgesR1R2
 {
   GEOM::GEOM_Object_var aGEOMObject;
 
-  if (theShape == NULL) return aGEOMObject._retn();
-
   //Get the reference shape
-  Handle(GEOM_Object) aShapeRef = GetOperations()->GetEngine()->GetObject
-    (theShape->GetStudyID(), theShape->GetEntry());
+  Handle(GEOM_Object) aShapeRef = GetObjectImpl(theShape);
   if (aShapeRef.IsNull()) return aGEOMObject._retn();
 
   //Get the reference edges
@@ -160,15 +150,12 @@ GEOM::GEOM_Object_ptr GEOM_ILocalOperations_i::MakeFilletEdgesR1R2
 //=============================================================================
 GEOM::GEOM_Object_ptr GEOM_ILocalOperations_i::MakeFilletFaces
                       (GEOM::GEOM_Object_ptr theShape, CORBA::Double theR,
-                      const GEOM::ListOfLong& theFaces)
+                       const GEOM::ListOfLong& theFaces)
 {
   GEOM::GEOM_Object_var aGEOMObject;
 
-  if (theShape == NULL) return aGEOMObject._retn();
-
   //Get the reference shape
-  Handle(GEOM_Object) aShapeRef = GetOperations()->GetEngine()->GetObject
-    (theShape->GetStudyID(), theShape->GetEntry());
+  Handle(GEOM_Object) aShapeRef = GetObjectImpl(theShape);
   if (aShapeRef.IsNull()) return aGEOMObject._retn();
 
   //Get the reference faces
@@ -199,11 +186,8 @@ GEOM::GEOM_Object_ptr GEOM_ILocalOperations_i::MakeFilletFacesR1R2
 {
   GEOM::GEOM_Object_var aGEOMObject;
 
-  if (theShape == NULL) return aGEOMObject._retn();
-
   //Get the reference shape
-  Handle(GEOM_Object) aShapeRef = GetOperations()->GetEngine()->GetObject
-    (theShape->GetStudyID(), theShape->GetEntry());
+  Handle(GEOM_Object) aShapeRef = GetObjectImpl(theShape);
   if (aShapeRef.IsNull()) return aGEOMObject._retn();
 
   //Get the reference faces
@@ -233,12 +217,8 @@ GEOM::GEOM_Object_ptr GEOM_ILocalOperations_i::MakeChamferAll
 {
   GEOM::GEOM_Object_var aGEOMObject;
 
-  if (theShape == NULL) return aGEOMObject._retn();
-
   //Get the reference shape
-  Handle(GEOM_Object) aShapeRef = GetOperations()->GetEngine()->GetObject
-    (theShape->GetStudyID(), theShape->GetEntry());
-
+  Handle(GEOM_Object) aShapeRef = GetObjectImpl(theShape);
   if (aShapeRef.IsNull()) return aGEOMObject._retn();
 
   //Create the Chamfer
@@ -257,16 +237,13 @@ GEOM::GEOM_Object_ptr GEOM_ILocalOperations_i::MakeChamferAll
 //=============================================================================
 GEOM::GEOM_Object_ptr GEOM_ILocalOperations_i::MakeChamferEdge
                       (GEOM::GEOM_Object_ptr theShape,
-                      CORBA::Double theD1, CORBA::Double theD2,
-                      CORBA::Long theFace1, CORBA::Long theFace2)
+                       CORBA::Double theD1, CORBA::Double theD2,
+                       CORBA::Long theFace1, CORBA::Long theFace2)
 {
   GEOM::GEOM_Object_var aGEOMObject;
 
-  if (theShape == NULL) return aGEOMObject._retn();
-
   //Get the reference shape
-  Handle(GEOM_Object) aShapeRef = GetOperations()->GetEngine()->GetObject
-    (theShape->GetStudyID(), theShape->GetEntry());
+  Handle(GEOM_Object) aShapeRef = GetObjectImpl(theShape);
   if (aShapeRef.IsNull()) return aGEOMObject._retn();
 
   //Create the Chamfer
@@ -284,16 +261,13 @@ GEOM::GEOM_Object_ptr GEOM_ILocalOperations_i::MakeChamferEdge
 //=============================================================================
 GEOM::GEOM_Object_ptr GEOM_ILocalOperations_i::MakeChamferEdgeAD
                       (GEOM::GEOM_Object_ptr theShape,
-                      CORBA::Double theD, CORBA::Double theAngle,
-                      CORBA::Long theFace1, CORBA::Long theFace2)
+                       CORBA::Double theD, CORBA::Double theAngle,
+                       CORBA::Long theFace1, CORBA::Long theFace2)
 {
   GEOM::GEOM_Object_var aGEOMObject;
 
-  if (theShape == NULL) return aGEOMObject._retn();
-
   //Get the reference shape
-  Handle(GEOM_Object) aShapeRef = GetOperations()->GetEngine()->GetObject
-    (theShape->GetStudyID(), theShape->GetEntry());
+  Handle(GEOM_Object) aShapeRef = GetObjectImpl(theShape);
   if (aShapeRef.IsNull()) return aGEOMObject._retn();
 
   //Create the Chamfer
@@ -312,16 +286,13 @@ GEOM::GEOM_Object_ptr GEOM_ILocalOperations_i::MakeChamferEdgeAD
 //=============================================================================
 GEOM::GEOM_Object_ptr GEOM_ILocalOperations_i::MakeChamferFaces
                       (GEOM::GEOM_Object_ptr theShape,
-                      CORBA::Double theD1, CORBA::Double theD2,
-                      const GEOM::ListOfLong& theFaces)
+                       CORBA::Double theD1, CORBA::Double theD2,
+                       const GEOM::ListOfLong& theFaces)
 {
   GEOM::GEOM_Object_var aGEOMObject;
 
-  if (theShape == NULL) return aGEOMObject._retn();
-
   //Get the reference shape
-  Handle(GEOM_Object) aShapeRef = GetOperations()->GetEngine()->GetObject
-    (theShape->GetStudyID(), theShape->GetEntry());
+  Handle(GEOM_Object) aShapeRef = GetObjectImpl(theShape);
   if (aShapeRef.IsNull()) return aGEOMObject._retn();
 
   //Get the reference faces
@@ -347,16 +318,13 @@ GEOM::GEOM_Object_ptr GEOM_ILocalOperations_i::MakeChamferFaces
 //=============================================================================
 GEOM::GEOM_Object_ptr GEOM_ILocalOperations_i::MakeChamferFacesAD
                       (GEOM::GEOM_Object_ptr theShape,
-                      CORBA::Double theD, CORBA::Double theAngle,
-                      const GEOM::ListOfLong& theFaces)
+                       CORBA::Double theD, CORBA::Double theAngle,
+                       const GEOM::ListOfLong& theFaces)
 {
   GEOM::GEOM_Object_var aGEOMObject;
 
-  if (theShape == NULL) return aGEOMObject._retn();
-
   //Get the reference shape
-  Handle(GEOM_Object) aShapeRef = GetOperations()->GetEngine()->GetObject
-    (theShape->GetStudyID(), theShape->GetEntry());
+  Handle(GEOM_Object) aShapeRef = GetObjectImpl(theShape);
   if (aShapeRef.IsNull()) return aGEOMObject._retn();
 
   //Get the reference faces
@@ -383,16 +351,13 @@ GEOM::GEOM_Object_ptr GEOM_ILocalOperations_i::MakeChamferFacesAD
 //=============================================================================
 GEOM::GEOM_Object_ptr GEOM_ILocalOperations_i::MakeChamferEdges
                       (GEOM::GEOM_Object_ptr theShape,
-                      CORBA::Double theD1, CORBA::Double theD2,
-                      const GEOM::ListOfLong& theEdges)
+                       CORBA::Double theD1, CORBA::Double theD2,
+                       const GEOM::ListOfLong& theEdges)
 {
   GEOM::GEOM_Object_var aGEOMObject;
 
-  if (theShape == NULL) return aGEOMObject._retn();
-
   //Get the reference shape
-  Handle(GEOM_Object) aShapeRef = GetOperations()->GetEngine()->GetObject
-    (theShape->GetStudyID(), theShape->GetEntry());
+  Handle(GEOM_Object) aShapeRef = GetObjectImpl(theShape);
   if (aShapeRef.IsNull()) return aGEOMObject._retn();
 
   //Get the reference edges
@@ -419,16 +384,13 @@ GEOM::GEOM_Object_ptr GEOM_ILocalOperations_i::MakeChamferEdges
 //=============================================================================
 GEOM::GEOM_Object_ptr GEOM_ILocalOperations_i::MakeChamferEdgesAD
                       (GEOM::GEOM_Object_ptr theShape,
-                      CORBA::Double theD, CORBA::Double theAngle,
-                      const GEOM::ListOfLong& theEdges)
+                       CORBA::Double theD, CORBA::Double theAngle,
+                       const GEOM::ListOfLong& theEdges)
 {
   GEOM::GEOM_Object_var aGEOMObject;
 
-  if (theShape == NULL) return aGEOMObject._retn();
-
   //Get the reference shape
-  Handle(GEOM_Object) aShapeRef = GetOperations()->GetEngine()->GetObject
-    (theShape->GetStudyID(), theShape->GetEntry());
+  Handle(GEOM_Object) aShapeRef = GetObjectImpl(theShape);
   if (aShapeRef.IsNull()) return aGEOMObject._retn();
 
   //Get the reference edges
@@ -454,17 +416,14 @@ GEOM::GEOM_Object_ptr GEOM_ILocalOperations_i::MakeChamferEdgesAD
  */
 //=============================================================================
 GEOM::GEOM_Object_ptr GEOM_ILocalOperations_i::MakeArchimede (GEOM::GEOM_Object_ptr theShape,
-                                                             CORBA::Double theWeight,
-                                                             CORBA::Double theWaterDensity,
-                                                             CORBA::Double theMeshingDeflection)
+                                                              CORBA::Double theWeight,
+                                                              CORBA::Double theWaterDensity,
+                                                              CORBA::Double theMeshingDeflection)
 {
   GEOM::GEOM_Object_var aGEOMObject;
 
-  if (theShape == NULL) return aGEOMObject._retn();
-
   //Get the reference shape
-  Handle(GEOM_Object) aShapeRef = GetOperations()->GetEngine()->GetObject
-    (theShape->GetStudyID(), theShape->GetEntry());
+  Handle(GEOM_Object) aShapeRef = GetObjectImpl(theShape);
   if (aShapeRef.IsNull()) return aGEOMObject._retn();
 
   //Create the Archimede
@@ -484,13 +443,9 @@ GEOM::GEOM_Object_ptr GEOM_ILocalOperations_i::MakeArchimede (GEOM::GEOM_Object_
 CORBA::Long GEOM_ILocalOperations_i::GetSubShapeIndex
   (GEOM::GEOM_Object_ptr theShape, GEOM::GEOM_Object_ptr theSubShape)
 {
-  if (theShape == NULL || theSubShape == NULL) return -1;
-
   //Get the reference shapes
-  Handle(GEOM_Object) aShapeRef = GetOperations()->GetEngine()->GetObject
-    (theShape->GetStudyID(), theShape->GetEntry());
-  Handle(GEOM_Object) aSubShapeRef = GetOperations()->GetEngine()->GetObject
-    (theSubShape->GetStudyID(), theSubShape->GetEntry());
+  Handle(GEOM_Object) aShapeRef = GetObjectImpl(theShape);
+  Handle(GEOM_Object) aSubShapeRef = GetObjectImpl(theSubShape);
   if (aShapeRef.IsNull() || aSubShapeRef.IsNull()) return -1;
 
   //Get the unique ID of <theSubShape> inside <theShape>
index 84248c73bcd2f408ab954e8d1de21403287a9a33..f3e332365e3e296a40fb64ff00e96063661aad87 100644 (file)
@@ -18,7 +18,7 @@
 //  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
 //
 //  See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
-//
+
 #include <Standard_Stream.hxx>
 
 #include "GEOM_IMeasureOperations_i.hh"
@@ -35,8 +35,8 @@
  */
 //=============================================================================
 GEOM_IMeasureOperations_i::GEOM_IMeasureOperations_i (PortableServer::POA_ptr thePOA,
-                                                   GEOM::GEOM_Gen_ptr theEngine,
-                                                   ::GEOMImpl_IMeasureOperations* theImpl)
+                                                      GEOM::GEOM_Gen_ptr theEngine,
+                                                      ::GEOMImpl_IMeasureOperations* theImpl)
 :GEOM_IOperations_i(thePOA, theEngine, theImpl)
 {
   MESSAGE("GEOM_IMeasureOperations_i::GEOM_IMeasureOperations_i");
@@ -59,8 +59,8 @@ GEOM_IMeasureOperations_i::~GEOM_IMeasureOperations_i()
 //=============================================================================
 GEOM::GEOM_IKindOfShape::shape_kind GEOM_IMeasureOperations_i::KindOfShape
                                    (GEOM::GEOM_Object_ptr  theShape,
-                                   GEOM::ListOfLong_out   theIntegers,
-                                   GEOM::ListOfDouble_out theDoubles)
+                                    GEOM::ListOfLong_out   theIntegers,
+                                    GEOM::ListOfDouble_out theDoubles)
 {
   GEOMImpl_IMeasureOperations::ShapeKind aKind = GEOMImpl_IMeasureOperations::SK_NO_SHAPE;
 
@@ -69,8 +69,7 @@ GEOM::GEOM_IKindOfShape::shape_kind GEOM_IMeasureOperations_i::KindOfShape
   GEOM::ListOfDouble_var aDoublesArray = new GEOM::ListOfDouble();
 
   //Get the reference shape
-  Handle(GEOM_Object) aShape = GetOperations()->GetEngine()->GetObject
-    (theShape->GetStudyID(), theShape->GetEntry());
+  Handle(GEOM_Object) aShape = GetObjectImpl(theShape);
 
   if (!aShape.IsNull()) {
     Handle(TColStd_HSequenceOfInteger) anIntegers = new TColStd_HSequenceOfInteger;
@@ -106,9 +105,9 @@ GEOM::GEOM_IKindOfShape::shape_kind GEOM_IMeasureOperations_i::KindOfShape
 //=============================================================================
 void GEOM_IMeasureOperations_i::GetPosition
                  (GEOM::GEOM_Object_ptr theShape,
-                 CORBA::Double& Ox, CORBA::Double& Oy, CORBA::Double& Oz,
-                 CORBA::Double& Zx, CORBA::Double& Zy, CORBA::Double& Zz,
-                 CORBA::Double& Xx, CORBA::Double& Xy, CORBA::Double& Xz)
+                  CORBA::Double& Ox, CORBA::Double& Oy, CORBA::Double& Oz,
+                  CORBA::Double& Zx, CORBA::Double& Zy, CORBA::Double& Zz,
+                  CORBA::Double& Xx, CORBA::Double& Xy, CORBA::Double& Xz)
 {
   //Set a not done flag
   GetOperations()->SetNotDone();
@@ -117,12 +116,8 @@ void GEOM_IMeasureOperations_i::GetPosition
   Ox = Oy = Oz = Zx = Zy = Xy = Xz = 0.;
   Zz = Xx = 1.;
 
-  if (theShape == NULL) return;
-
   //Get the reference shape
-  Handle(GEOM_Object) aShape = GetOperations()->GetEngine()->GetObject
-    (theShape->GetStudyID(), theShape->GetEntry());
-
+  Handle(GEOM_Object) aShape = GetObjectImpl(theShape);
   if (aShape.IsNull()) return;
 
   // Get shape parameters
@@ -142,12 +137,8 @@ GEOM::GEOM_Object_ptr GEOM_IMeasureOperations_i::GetCentreOfMass
   //Set a not done flag
   GetOperations()->SetNotDone();
 
-  if (CORBA::is_nil(theShape)) return aGEOMObject._retn();
-
   //Get the reference shape
-  Handle(GEOM_Object) aShape = GetOperations()->GetEngine()->GetObject
-    (theShape->GetStudyID(), theShape->GetEntry());
-
+  Handle(GEOM_Object) aShape = GetObjectImpl(theShape);
   if (aShape.IsNull()) return aGEOMObject._retn();
 
   // Make Point - centre of mass of theShape
@@ -165,27 +156,21 @@ GEOM::GEOM_Object_ptr GEOM_IMeasureOperations_i::GetCentreOfMass
 //=============================================================================
 GEOM::GEOM_Object_ptr GEOM_IMeasureOperations_i::GetNormal
                                        (GEOM::GEOM_Object_ptr theFace,
-                                       GEOM::GEOM_Object_ptr theOptionalPoint)
+                                        GEOM::GEOM_Object_ptr theOptionalPoint)
 {
   GEOM::GEOM_Object_var aGEOMObject;
 
   //Set a not done flag
   GetOperations()->SetNotDone();
 
-  if (CORBA::is_nil(theFace)) return aGEOMObject._retn();
-
   //Get the reference shape
-  Handle(GEOM_Object) aFace = GetOperations()->GetEngine()->GetObject
-    (theFace->GetStudyID(), theFace->GetEntry());
-
+  Handle(GEOM_Object) aFace = GetObjectImpl(theFace);
   if (aFace.IsNull()) return aGEOMObject._retn();
 
+  // Get the OptionalPoint (can be not defined)
+  Handle(GEOM_Object) anOptionalPoint = GetObjectImpl(theOptionalPoint);
+
   // Make Vector - normal to theFace (in point theOptionalPoint if the face is not planar)
-  Handle(GEOM_Object) anOptionalPoint;
-  if (!CORBA::is_nil(theOptionalPoint)) {
-    anOptionalPoint = GetOperations()->GetEngine()->GetObject
-      (theOptionalPoint->GetStudyID(), theOptionalPoint->GetEntry());
-  }
   Handle(GEOM_Object) anObject = GetOperations()->GetNormal(aFace, anOptionalPoint);
   if (!GetOperations()->IsDone() || anObject.IsNull())
     return aGEOMObject._retn();
@@ -199,19 +184,15 @@ GEOM::GEOM_Object_ptr GEOM_IMeasureOperations_i::GetNormal
  */
 //=============================================================================
 void GEOM_IMeasureOperations_i::GetBasicProperties (GEOM::GEOM_Object_ptr theShape,
-                                                   CORBA::Double& theLength,
-                                                   CORBA::Double& theSurfArea,
-                                                   CORBA::Double& theVolume)
+                                                    CORBA::Double& theLength,
+                                                    CORBA::Double& theSurfArea,
+                                                    CORBA::Double& theVolume)
 {
   //Set a not done flag
   GetOperations()->SetNotDone();
 
-  if (theShape == NULL) return;
-
   //Get the reference shape
-  Handle(GEOM_Object) aShape = GetOperations()->GetEngine()->GetObject
-    (theShape->GetStudyID(), theShape->GetEntry());
-
+  Handle(GEOM_Object) aShape = GetObjectImpl(theShape);
   if (aShape.IsNull()) return;
 
   // Get shape parameters
@@ -233,20 +214,16 @@ void GEOM_IMeasureOperations_i::GetInertia
   //Set a not done flag
   GetOperations()->SetNotDone();
 
-  if (theShape == NULL) return;
-
   //Get the reference shape
-  Handle(GEOM_Object) aShape = GetOperations()->GetEngine()->GetObject
-    (theShape->GetStudyID(), theShape->GetEntry());
-
+  Handle(GEOM_Object) aShape = GetObjectImpl(theShape);
   if (aShape.IsNull()) return;
 
   // Get shape parameters
   GetOperations()->GetInertia(aShape,
-                             I11, I12, I13,
-                             I21, I22, I23,
-                             I31, I32, I33,
-                             Ix , Iy , Iz);
+                              I11, I12, I13,
+                              I21, I22, I23,
+                              I31, I32, I33,
+                              Ix , Iy , Iz);
 }
 
 //=============================================================================
@@ -255,19 +232,15 @@ void GEOM_IMeasureOperations_i::GetInertia
  */
 //=============================================================================
 void GEOM_IMeasureOperations_i::GetBoundingBox (GEOM::GEOM_Object_ptr theShape,
-                                               CORBA::Double& Xmin, CORBA::Double& Xmax,
-                                               CORBA::Double& Ymin, CORBA::Double& Ymax,
-                                               CORBA::Double& Zmin, CORBA::Double& Zmax)
+                                                CORBA::Double& Xmin, CORBA::Double& Xmax,
+                                                CORBA::Double& Ymin, CORBA::Double& Ymax,
+                                                CORBA::Double& Zmin, CORBA::Double& Zmax)
 {
   //Set a not done flag
   GetOperations()->SetNotDone();
 
-  if (theShape == NULL) return;
-
   //Get the reference shape
-  Handle(GEOM_Object) aShape = GetOperations()->GetEngine()->GetObject
-    (theShape->GetStudyID(), theShape->GetEntry());
-
+  Handle(GEOM_Object) aShape = GetObjectImpl(theShape);
   if (aShape.IsNull()) return;
 
   // Get shape parameters
@@ -281,26 +254,22 @@ void GEOM_IMeasureOperations_i::GetBoundingBox (GEOM::GEOM_Object_ptr theShape,
 //=============================================================================
 void GEOM_IMeasureOperations_i::GetTolerance
                                 (GEOM::GEOM_Object_ptr theShape,
-                                CORBA::Double& FaceMin, CORBA::Double& FaceMax,
-                                CORBA::Double& EdgeMin, CORBA::Double& EdgeMax,
-                                CORBA::Double& VertMin, CORBA::Double& VertMax)
+                                 CORBA::Double& FaceMin, CORBA::Double& FaceMax,
+                                 CORBA::Double& EdgeMin, CORBA::Double& EdgeMax,
+                                 CORBA::Double& VertMin, CORBA::Double& VertMax)
 {
   //Set a not done flag
   GetOperations()->SetNotDone();
 
-  if (theShape == NULL) return;
-
   //Get the reference shape
-  Handle(GEOM_Object) aShape = GetOperations()->GetEngine()->GetObject
-    (theShape->GetStudyID(), theShape->GetEntry());
-
+  Handle(GEOM_Object) aShape = GetObjectImpl(theShape);
   if (aShape.IsNull()) return;
 
   // Get shape parameters
   GetOperations()->GetTolerance(aShape,
-                               FaceMin, FaceMax,
-                               EdgeMin, EdgeMax,
-                               VertMin, VertMax);
+                                FaceMin, FaceMax,
+                                EdgeMin, EdgeMax,
+                                VertMin, VertMax);
 }
 
 //=============================================================================
@@ -309,20 +278,19 @@ void GEOM_IMeasureOperations_i::GetTolerance
  */
 //=============================================================================
 CORBA::Boolean GEOM_IMeasureOperations_i::CheckShape (GEOM::GEOM_Object_ptr theShape,
-                                                     CORBA::String_out     theDescription)
+                                                      CORBA::String_out     theDescription)
 {
   //Set a not done flag
   GetOperations()->SetNotDone();
 
-  if (theShape == NULL)
+  if (CORBA::is_nil(theShape))
   {
     theDescription = CORBA::string_dup("null");
     return 0;
   }
 
   //Get the reference shape
-  Handle(GEOM_Object) aShape = GetOperations()->GetEngine()->GetObject
-    (theShape->GetStudyID(), theShape->GetEntry());
+  Handle(GEOM_Object) aShape = GetObjectImpl(theShape);
 
   if (aShape.IsNull())
   {
@@ -342,20 +310,19 @@ CORBA::Boolean GEOM_IMeasureOperations_i::CheckShape (GEOM::GEOM_Object_ptr theS
 }
 
 CORBA::Boolean GEOM_IMeasureOperations_i::CheckShapeWithGeometry (GEOM::GEOM_Object_ptr theShape,
-                                                                 CORBA::String_out     theDescription)
+                                                                  CORBA::String_out     theDescription)
 {
   //Set a not done flag
   GetOperations()->SetNotDone();
 
-  if (theShape == NULL)
+  if (CORBA::is_nil(theShape))
   {
     theDescription = CORBA::string_dup("null");
     return 0;
   }
 
   //Get the reference shape
-  Handle(GEOM_Object) aShape = GetOperations()->GetEngine()->GetObject
-    (theShape->GetStudyID(), theShape->GetEntry());
+  Handle(GEOM_Object) aShape = GetObjectImpl(theShape);
 
   if (aShape.IsNull())
   {
@@ -384,12 +351,8 @@ char* GEOM_IMeasureOperations_i::WhatIs (GEOM::GEOM_Object_ptr theShape)
   //Set a not done flag
   GetOperations()->SetNotDone();
 
-  if (theShape == NULL) return NULL;
-
   //Get the reference shape
-  Handle(GEOM_Object) aShape = GetOperations()->GetEngine()->GetObject
-    (theShape->GetStudyID(), theShape->GetEntry());
-
+  Handle(GEOM_Object) aShape = GetObjectImpl(theShape);
   if (aShape.IsNull()) return NULL;
 
   // Get shape parameters
@@ -410,14 +373,9 @@ CORBA::Double GEOM_IMeasureOperations_i::GetMinDistance
   //Set a not done flag
   GetOperations()->SetNotDone();
 
-  if (theShape1 == NULL || theShape2 == NULL) return -1.0;
-
   //Get the reference shape
-  Handle(GEOM_Object) aShape1 = GetOperations()->GetEngine()->GetObject
-    (theShape1->GetStudyID(), theShape1->GetEntry());
-  Handle(GEOM_Object) aShape2 = GetOperations()->GetEngine()->GetObject
-    (theShape2->GetStudyID(), theShape2->GetEntry());
-
+  Handle(GEOM_Object) aShape1 = GetObjectImpl(theShape1);
+  Handle(GEOM_Object) aShape2 = GetObjectImpl(theShape2);
   if (aShape1.IsNull() || aShape2.IsNull()) return -1.0;
 
   // Get shape parameters
@@ -430,20 +388,15 @@ CORBA::Double GEOM_IMeasureOperations_i::GetMinDistance
  */
 //=============================================================================
 void GEOM_IMeasureOperations_i::PointCoordinates (GEOM::GEOM_Object_ptr theShape,
-                                                 CORBA::Double& X, CORBA::Double& Y, CORBA::Double& Z)
+                                                  CORBA::Double& X, CORBA::Double& Y, CORBA::Double& Z)
 
 {
   //Set a not done flag
   GetOperations()->SetNotDone();
 
-  if ( theShape->_is_nil() )
-    return;
-
   //Get the reference shape
-  Handle(GEOM_Object) aShape = GetOperations()->GetEngine()->GetObject(
-    theShape->GetStudyID(), theShape->GetEntry() );
-
-  if ( aShape.IsNull() )
+  Handle(GEOM_Object) aShape = GetObjectImpl(theShape);
+  if (aShape.IsNull())
     return;
 
   // Get shape parameters
@@ -456,19 +409,14 @@ void GEOM_IMeasureOperations_i::PointCoordinates (GEOM::GEOM_Object_ptr theShape
  */
 //=============================================================================
 CORBA::Double GEOM_IMeasureOperations_i::GetAngle (GEOM::GEOM_Object_ptr theShape1,
-                                                  GEOM::GEOM_Object_ptr theShape2)
+                                                   GEOM::GEOM_Object_ptr theShape2)
 {
   //Set a not done flag
   GetOperations()->SetNotDone();
 
-  if (theShape1 == NULL || theShape2 == NULL) return -1.0;
-
   //Get the reference shapes
-  Handle(GEOM_Object) aShape1 = GetOperations()->GetEngine()->GetObject
-    (theShape1->GetStudyID(), theShape1->GetEntry());
-  Handle(GEOM_Object) aShape2 = GetOperations()->GetEngine()->GetObject
-    (theShape2->GetStudyID(), theShape2->GetEntry());
-
+  Handle(GEOM_Object) aShape1 = GetObjectImpl(theShape1);
+  Handle(GEOM_Object) aShape2 = GetObjectImpl(theShape2);
   if (aShape1.IsNull() || aShape2.IsNull()) return -1.0;
 
   // Get the angle
@@ -487,18 +435,13 @@ CORBA::Double GEOM_IMeasureOperations_i::CurveCurvatureByParam
   //Set a not done flag
   GetOperations()->SetNotDone();
 
-  if(theCurve==NULL) return -1.0;
-
   //Get the reference shape
-  Handle(GEOM_Object) aShape = GetOperations()->GetEngine()->GetObject
-    (theCurve->GetStudyID(), theCurve->GetEntry());
-
+  Handle(GEOM_Object) aShape = GetObjectImpl(theCurve);
   if(aShape.IsNull()) return -1.0;
 
   return GetOperations()->CurveCurvatureByParam(aShape,theParam);
 }
 
-
 //=============================================================================
 /*!
  *  CurveCurvatureByPoint
@@ -510,14 +453,9 @@ CORBA::Double GEOM_IMeasureOperations_i::CurveCurvatureByPoint
   //Set a not done flag
   GetOperations()->SetNotDone();
 
-  if( theCurve==NULL || thePoint==NULL ) return -1.0;
-
   //Get the reference shape
-  Handle(GEOM_Object) aShape = GetOperations()->GetEngine()->GetObject
-    (theCurve->GetStudyID(), theCurve->GetEntry());
-  Handle(GEOM_Object) aPoint = GetOperations()->GetEngine()->GetObject
-    (thePoint->GetStudyID(), thePoint->GetEntry());
-
+  Handle(GEOM_Object) aShape = GetObjectImpl(theCurve);
+  Handle(GEOM_Object) aPoint = GetObjectImpl(thePoint);
   if( aShape.IsNull() || aPoint.IsNull() ) return -1.0;
 
   return GetOperations()->CurveCurvatureByPoint(aShape,aPoint);
@@ -531,24 +469,19 @@ CORBA::Double GEOM_IMeasureOperations_i::CurveCurvatureByPoint
 //=============================================================================
 CORBA::Double GEOM_IMeasureOperations_i::MaxSurfaceCurvatureByParam
                                                 (GEOM::GEOM_Object_ptr theSurf,
-                                                CORBA::Double theUParam,
-                                                CORBA::Double theVParam)
+                                                 CORBA::Double theUParam,
+                                                 CORBA::Double theVParam)
 {
   //Set a not done flag
   GetOperations()->SetNotDone();
 
-  if(theSurf==NULL) return -1.0;
-
   //Get the reference shape
-  Handle(GEOM_Object) aShape = GetOperations()->GetEngine()->GetObject
-    (theSurf->GetStudyID(), theSurf->GetEntry());
-
+  Handle(GEOM_Object) aShape = GetObjectImpl(theSurf);
   if(aShape.IsNull()) return -1.0;
 
   return GetOperations()->MaxSurfaceCurvatureByParam(aShape,theUParam,theVParam);
 }
 
-
 //=============================================================================
 /*!
  *  MaxSurfaceCurvatureByPoint
@@ -560,20 +493,14 @@ CORBA::Double GEOM_IMeasureOperations_i::MaxSurfaceCurvatureByPoint
   //Set a not done flag
   GetOperations()->SetNotDone();
 
-  if( theSurf==NULL || thePoint==NULL ) return -1.0;
-
   //Get the reference shape
-  Handle(GEOM_Object) aShape = GetOperations()->GetEngine()->GetObject
-    (theSurf->GetStudyID(), theSurf->GetEntry());
-  Handle(GEOM_Object) aPoint = GetOperations()->GetEngine()->GetObject
-    (thePoint->GetStudyID(), thePoint->GetEntry());
-
+  Handle(GEOM_Object) aShape = GetObjectImpl(theSurf);
+  Handle(GEOM_Object) aPoint = GetObjectImpl(thePoint);
   if( aShape.IsNull() || aPoint.IsNull() ) return -1.0;
 
   return GetOperations()->MaxSurfaceCurvatureByPoint(aShape,aPoint);
 }
 
-
 //=============================================================================
 /*!
  *  MinSurfaceCurvatureByParam
@@ -581,24 +508,19 @@ CORBA::Double GEOM_IMeasureOperations_i::MaxSurfaceCurvatureByPoint
 //=============================================================================
 CORBA::Double GEOM_IMeasureOperations_i::MinSurfaceCurvatureByParam
                                                 (GEOM::GEOM_Object_ptr theSurf,
-                                                CORBA::Double theUParam,
-                                                CORBA::Double theVParam)
+                                                 CORBA::Double theUParam,
+                                                 CORBA::Double theVParam)
 {
   //Set a not done flag
   GetOperations()->SetNotDone();
 
-  if(theSurf==NULL) return -1.0;
-
   //Get the reference shape
-  Handle(GEOM_Object) aShape = GetOperations()->GetEngine()->GetObject
-    (theSurf->GetStudyID(), theSurf->GetEntry());
-
-  if(aShape.IsNull()) return -1.0;
+  Handle(GEOM_Object) aShape = GetObjectImpl(theSurf);
+  if (aShape.IsNull()) return -1.0;
 
   return GetOperations()->MinSurfaceCurvatureByParam(aShape,theUParam,theVParam);
 }
 
-
 //=============================================================================
 /*!
  *  MinSurfaceCurvatureByPoint
@@ -610,15 +532,10 @@ CORBA::Double GEOM_IMeasureOperations_i::MinSurfaceCurvatureByPoint
   //Set a not done flag
   GetOperations()->SetNotDone();
 
-  if( theSurf==NULL || thePoint==NULL ) return -1.0;
-
   //Get the reference shape
-  Handle(GEOM_Object) aShape = GetOperations()->GetEngine()->GetObject
-    (theSurf->GetStudyID(), theSurf->GetEntry());
-  Handle(GEOM_Object) aPoint = GetOperations()->GetEngine()->GetObject
-    (thePoint->GetStudyID(), thePoint->GetEntry());
-
-  if( aShape.IsNull() || aPoint.IsNull() ) return -1.0;
+  Handle(GEOM_Object) aShape = GetObjectImpl(theSurf);
+  Handle(GEOM_Object) aPoint = GetObjectImpl(thePoint);
+  if (aShape.IsNull() || aPoint.IsNull()) return -1.0;
 
   return GetOperations()->MinSurfaceCurvatureByPoint(aShape,aPoint);
 }
index 3a6516150124c95a41ce45137192e17044472547..4114d6647a0cfdcc579a6e6f276b1e139d9ec214 100644 (file)
@@ -18,7 +18,7 @@
 //  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
 //
 //  See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
-//
+
 #include "GEOM_IOperations_i.hh"
 
 #include "GEOM_Engine.hxx"
@@ -131,9 +131,26 @@ void GEOM_IOperations_i::AbortOperation()
 //=============================================================================
 GEOM::GEOM_Object_ptr GEOM_IOperations_i::GetObject(Handle(GEOM_Object) theObject)
 {
-  if(theObject.IsNull()) return NULL;
+  GEOM::GEOM_Object_var GO;
+  if (theObject.IsNull()) return GO._retn();
   TCollection_AsciiString anEntry;
   TDF_Tool::Entry(theObject->GetEntry(), anEntry);
-  GEOM::GEOM_Object_var GO = _engine->GetObject(theObject->GetDocID(), anEntry.ToCString());
+  GO = _engine->GetObject(theObject->GetDocID(), anEntry.ToCString());
   return GO._retn();
 }
+
+//=============================================================================
+/*!
+ *  GetObjectImpl
+ */
+//=============================================================================
+Handle(GEOM_Object) GEOM_IOperations_i::GetObjectImpl(GEOM::GEOM_Object_ptr theObject)
+{
+  Handle(GEOM_Object) anImpl;
+  if (!CORBA::is_nil(theObject)) {
+    CORBA::String_var anEntry = theObject->GetEntry();
+    anImpl = GetImpl()->GetEngine()->GetObject
+      (theObject->GetStudyID(), anEntry);
+  }
+  return anImpl;
+}
index c816e0bebaebb45e3014d525abb6b3f8c6312ddd..54e7b6dad87db2b1e424177629729995e789a5fd 100644 (file)
@@ -47,6 +47,7 @@ class GEOM_I_EXPORT GEOM_IOperations_i : public virtual POA_GEOM::GEOM_IOperatio
   virtual CORBA::Long GetStudyID();    
 
   virtual GEOM::GEOM_Object_ptr GetObject(Handle(GEOM_Object) theObject);
+  virtual Handle(GEOM_Object) GetObjectImpl(GEOM::GEOM_Object_ptr theObject);
 
   virtual void StartOperation();
 
index 60480ef207f29443a6f21db6bf88dfec28676b19..093dd1a64e20258e16c8c524ba1df06189e786b6 100644 (file)
@@ -18,7 +18,7 @@
 //  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
 //
 //  See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
-//
+
 #include <Standard_Stream.hxx>
 
 #include "GEOM_IShapesOperations_i.hh"
@@ -41,8 +41,8 @@ using namespace std;
  */
 //=============================================================================
 GEOM_IShapesOperations_i::GEOM_IShapesOperations_i (PortableServer::POA_ptr thePOA,
-                                                   GEOM::GEOM_Gen_ptr theEngine,
-                                                   ::GEOMImpl_IShapesOperations* theImpl)
+                                                    GEOM::GEOM_Gen_ptr theEngine,
+                                                    ::GEOMImpl_IShapesOperations* theImpl)
 :GEOM_IOperations_i(thePOA, theEngine, theImpl)
 {
   MESSAGE("GEOM_IShapesOperations_i::GEOM_IShapesOperations_i");
@@ -72,13 +72,9 @@ GEOM::GEOM_Object_ptr GEOM_IShapesOperations_i::MakeEdge
   //Set a not done flag
   GetOperations()->SetNotDone();
 
-  if (thePnt1 == NULL || thePnt2 == NULL) return aGEOMObject._retn();
-
   //Get the reference points
-  Handle(GEOM_Object) aPnt1 = GetOperations()->GetEngine()->GetObject
-    (thePnt1->GetStudyID(), thePnt1->GetEntry());
-  Handle(GEOM_Object) aPnt2 = GetOperations()->GetEngine()->GetObject
-    (thePnt2->GetStudyID(), thePnt2->GetEntry());
+  Handle(GEOM_Object) aPnt1 = GetObjectImpl(thePnt1);
+  Handle(GEOM_Object) aPnt2 = GetObjectImpl(thePnt2);
 
   if (aPnt1.IsNull() || aPnt2.IsNull()) return aGEOMObject._retn();
 
@@ -109,9 +105,7 @@ GEOM::GEOM_Object_ptr GEOM_IShapesOperations_i::MakeWire
   //Get the shapes
   aLen = theEdgesAndWires.length();
   for (ind = 0; ind < aLen; ind++) {
-    if (theEdgesAndWires[ind] == NULL) return aGEOMObject._retn();
-    Handle(GEOM_Object) aSh = GetOperations()->GetEngine()->GetObject
-      (theEdgesAndWires[ind]->GetStudyID(), theEdgesAndWires[ind]->GetEntry());
+    Handle(GEOM_Object) aSh = GetObjectImpl(theEdgesAndWires[ind]);
     if (aSh.IsNull()) return aGEOMObject._retn();
     aShapes.push_back(aSh);
   }
@@ -132,19 +126,15 @@ GEOM::GEOM_Object_ptr GEOM_IShapesOperations_i::MakeWire
 //=============================================================================
 GEOM::GEOM_Object_ptr GEOM_IShapesOperations_i::MakeFace
                       (GEOM::GEOM_Object_ptr theWire,
-                      const CORBA::Boolean  isPlanarWanted)
+                       const CORBA::Boolean  isPlanarWanted)
 {
   GEOM::GEOM_Object_var aGEOMObject;
 
   //Set a not done flag
   GetOperations()->SetNotDone();
 
-  if (theWire == NULL) return aGEOMObject._retn();
-
   //Get the reference wire
-  Handle(GEOM_Object) aWire = GetOperations()->GetEngine()->GetObject
-    (theWire->GetStudyID(), theWire->GetEntry());
-
+  Handle(GEOM_Object) aWire = GetObjectImpl(theWire);
   if (aWire.IsNull()) return aGEOMObject._retn();
 
   //Create the Face
@@ -162,7 +152,7 @@ GEOM::GEOM_Object_ptr GEOM_IShapesOperations_i::MakeFace
 //=============================================================================
 GEOM::GEOM_Object_ptr GEOM_IShapesOperations_i::MakeFaceWires
                                          (const GEOM::ListOfGO& theWires,
-                                         const CORBA::Boolean  isPlanarWanted)
+                                          const CORBA::Boolean  isPlanarWanted)
 {
   GEOM::GEOM_Object_var aGEOMObject;
 
@@ -175,9 +165,7 @@ GEOM::GEOM_Object_ptr GEOM_IShapesOperations_i::MakeFaceWires
   //Get the shapes
   aLen = theWires.length();
   for (ind = 0; ind < aLen; ind++) {
-    if (theWires[ind] == NULL) return aGEOMObject._retn();
-    Handle(GEOM_Object) aSh = GetOperations()->GetEngine()->GetObject
-      (theWires[ind]->GetStudyID(), theWires[ind]->GetEntry());
+    Handle(GEOM_Object) aSh = GetObjectImpl(theWires[ind]);
     if (aSh.IsNull()) return aGEOMObject._retn();
     aShapes.push_back(aSh);
   }
@@ -210,9 +198,7 @@ GEOM::GEOM_Object_ptr GEOM_IShapesOperations_i::MakeShell
   //Get the shapes
   aLen = theFacesAndShells.length();
   for (ind = 0; ind < aLen; ind++) {
-    if (theFacesAndShells[ind] == NULL) return aGEOMObject._retn();
-    Handle(GEOM_Object) aSh = GetOperations()->GetEngine()->GetObject
-      (theFacesAndShells[ind]->GetStudyID(), theFacesAndShells[ind]->GetEntry());
+    Handle(GEOM_Object) aSh = GetObjectImpl(theFacesAndShells[ind]);
     if (aSh.IsNull()) return aGEOMObject._retn();
     aShapes.push_back(aSh);
   }
@@ -239,12 +225,8 @@ GEOM::GEOM_Object_ptr GEOM_IShapesOperations_i::MakeSolidShell
   //Set a not done flag
   GetOperations()->SetNotDone();
 
-  if (theShell == NULL) return aGEOMObject._retn();
-
   //Get the reference objects
-  Handle(GEOM_Object) aShell = GetOperations()->GetEngine()->GetObject
-    (theShell->GetStudyID(), theShell->GetEntry());
-
+  Handle(GEOM_Object) aShell = GetObjectImpl(theShell);
   if (aShell.IsNull()) return aGEOMObject._retn();
 
   //Create the Solid
@@ -274,9 +256,7 @@ GEOM::GEOM_Object_ptr GEOM_IShapesOperations_i::MakeSolidShells
   //Get the shapes
   aLen = theShells.length();
   for (ind = 0; ind < aLen; ind++) {
-    if (theShells[ind] == NULL) return aGEOMObject._retn();
-    Handle(GEOM_Object) aSh = GetOperations()->GetEngine()->GetObject
-      (theShells[ind]->GetStudyID(), theShells[ind]->GetEntry());
+    Handle(GEOM_Object) aSh = GetObjectImpl(theShells[ind]);
     if (aSh.IsNull()) return aGEOMObject._retn();
     aShapes.push_back(aSh);
   }
@@ -309,9 +289,7 @@ GEOM::GEOM_Object_ptr GEOM_IShapesOperations_i::MakeCompound
   //Get the shapes
   aLen = theShapes.length();
   for (ind = 0; ind < aLen; ind++) {
-    if (theShapes[ind] == NULL) return aGEOMObject._retn();
-    Handle(GEOM_Object) aSh = GetOperations()->GetEngine()->GetObject
-      (theShapes[ind]->GetStudyID(), theShapes[ind]->GetEntry());
+    Handle(GEOM_Object) aSh = GetObjectImpl(theShapes[ind]);
     if (aSh.IsNull()) return aGEOMObject._retn();
     aShapes.push_back(aSh);
   }
@@ -332,20 +310,16 @@ GEOM::GEOM_Object_ptr GEOM_IShapesOperations_i::MakeCompound
 //=============================================================================
 GEOM::GEOM_Object_ptr GEOM_IShapesOperations_i::MakeGlueFaces
                                            (GEOM::GEOM_Object_ptr theShape,
-                                           CORBA::Double   theTolerance,
-                                           CORBA::Boolean  doKeepNonSolids)
+                                            CORBA::Double   theTolerance,
+                                            CORBA::Boolean  doKeepNonSolids)
 {
   GEOM::GEOM_Object_var aGEOMObject;
 
   //Set a not done flag
   GetOperations()->SetNotDone();
 
-  if (theShape == NULL) return aGEOMObject._retn();
-
   //Get the reference objects
-  Handle(GEOM_Object) aShape = GetOperations()->GetEngine()->GetObject
-    (theShape->GetStudyID(), theShape->GetEntry());
-
+  Handle(GEOM_Object) aShape = GetObjectImpl(theShape);
   if (aShape.IsNull()) return aGEOMObject._retn();
 
   //Perform the gluing
@@ -367,18 +341,15 @@ GEOM::GEOM_Object_ptr GEOM_IShapesOperations_i::MakeGlueFaces
 //=============================================================================
 GEOM::ListOfGO* GEOM_IShapesOperations_i::GetGlueFaces
                                            (GEOM::GEOM_Object_ptr theShape,
-                                           const CORBA::Double   theTolerance)
+                                            const CORBA::Double   theTolerance)
 {
   GEOM::ListOfGO_var aSeq = new GEOM::ListOfGO;
 
   //Set a not done flag
   GetOperations()->SetNotDone();
 
-  if (theShape == NULL) return aSeq._retn();
-
   //Get the reference objects
-  Handle(GEOM_Object) aShape = GetOperations()->GetEngine()->GetObject
-    (theShape->GetStudyID(), theShape->GetEntry());
+  Handle(GEOM_Object) aShape = GetObjectImpl(theShape);
   if (aShape.IsNull()) return aSeq._retn();
 
   Handle(TColStd_HSequenceOfTransient) aHSeq =
@@ -405,21 +376,17 @@ GEOM::ListOfGO* GEOM_IShapesOperations_i::GetGlueFaces
 //=============================================================================
 GEOM::GEOM_Object_ptr GEOM_IShapesOperations_i::MakeGlueFacesByList
                                            (GEOM::GEOM_Object_ptr theShape,
-                                           CORBA::Double   theTolerance,
-                                           const GEOM::ListOfGO& theFaces,
-                                           CORBA::Boolean  doKeepNonSolids)
+                                            CORBA::Double   theTolerance,
+                                            const GEOM::ListOfGO& theFaces,
+                                            CORBA::Boolean  doKeepNonSolids)
 {
   GEOM::GEOM_Object_var aGEOMObject;
 
   //Set a not done flag
   GetOperations()->SetNotDone();
 
-  if (theShape == NULL) return aGEOMObject._retn();
-
   //Get the reference objects
-  Handle(GEOM_Object) aShape = GetOperations()->GetEngine()->GetObject
-    (theShape->GetStudyID(), theShape->GetEntry());
-
+  Handle(GEOM_Object) aShape = GetObjectImpl(theShape);
   if (aShape.IsNull()) return aGEOMObject._retn();
 
   int ind, aLen;
@@ -427,9 +394,7 @@ GEOM::GEOM_Object_ptr GEOM_IShapesOperations_i::MakeGlueFacesByList
   //Get the shapes
   aLen = theFaces.length();
   for (ind = 0; ind < aLen; ind++) {
-    if (theFaces[ind] == NULL) return aGEOMObject._retn();
-    Handle(GEOM_Object) aSh = GetOperations()->GetEngine()->GetObject
-      (theFaces[ind]->GetStudyID(), theFaces[ind]->GetEntry());
+    Handle(GEOM_Object) aSh = GetObjectImpl(theFaces[ind]);
     if (aSh.IsNull()) return aGEOMObject._retn();
     aFaces.push_back(aSh);
   }
@@ -452,14 +417,13 @@ GEOM::GEOM_Object_ptr GEOM_IShapesOperations_i::MakeGlueFacesByList
  */
 //=============================================================================
 GEOM::ListOfGO* GEOM_IShapesOperations_i::MakeExplode (GEOM::GEOM_Object_ptr theShape,
-                                                      const CORBA::Long     theShapeType,
-                                                      const CORBA::Boolean  isSorted)
+                                                       const CORBA::Long     theShapeType,
+                                                       const CORBA::Boolean  isSorted)
 {
   GEOM::ListOfGO_var aSeq = new GEOM::ListOfGO;
-  if (theShape == NULL) return aSeq._retn();
 
-  Handle(GEOM_Object) aShape = GetOperations()->GetEngine()->GetObject
-    (theShape->GetStudyID(), theShape->GetEntry());
+  Handle(GEOM_Object) aShape = GetObjectImpl(theShape);
+  if (aShape.IsNull()) return aSeq._retn();
 
   Handle(TColStd_HSequenceOfTransient) aHSeq =
     GetOperations()->MakeExplode(aShape, theShapeType, isSorted);
@@ -480,14 +444,13 @@ GEOM::ListOfGO* GEOM_IShapesOperations_i::MakeExplode (GEOM::GEOM_Object_ptr the
  */
 //=============================================================================
 GEOM::ListOfLong* GEOM_IShapesOperations_i::SubShapeAllIDs (GEOM::GEOM_Object_ptr theShape,
-                                                           const CORBA::Long     theShapeType,
-                                                           const CORBA::Boolean  isSorted)
+                                                            const CORBA::Long     theShapeType,
+                                                            const CORBA::Boolean  isSorted)
 {
   GEOM::ListOfLong_var aSeq = new GEOM::ListOfLong;
-  if (theShape == NULL) return aSeq._retn();
 
-  Handle(GEOM_Object) aShape = GetOperations()->GetEngine()->GetObject
-    (theShape->GetStudyID(), theShape->GetEntry());
+  Handle(GEOM_Object) aShape = GetObjectImpl(theShape);
+  if (aShape.IsNull()) return aSeq._retn();
 
   Handle(TColStd_HSequenceOfInteger) aHSeq =
     GetOperations()->SubShapeAllIDs(aShape, theShapeType, isSorted);
@@ -508,19 +471,15 @@ GEOM::ListOfLong* GEOM_IShapesOperations_i::SubShapeAllIDs (GEOM::GEOM_Object_pt
 //=============================================================================
 GEOM::GEOM_Object_ptr GEOM_IShapesOperations_i::GetSubShape
                                            (GEOM::GEOM_Object_ptr theMainShape,
-                                           const CORBA::Long     theID)
+                                            const CORBA::Long     theID)
 {
   GEOM::GEOM_Object_var aGEOMObject;
 
   //Set a not done flag
   GetOperations()->SetNotDone();
 
-  if (theMainShape == NULL) return aGEOMObject._retn();
-
   //Get the reference objects
-  Handle(GEOM_Object) aShape = GetOperations()->GetEngine()->GetObject
-    (theMainShape->GetStudyID(), theMainShape->GetEntry());
-
+  Handle(GEOM_Object) aShape = GetObjectImpl(theMainShape);
   if (aShape.IsNull()) return aGEOMObject._retn();
 
   Handle(GEOM_Object) anObject = GetOperations()->GetSubShape(aShape, theID);
@@ -538,13 +497,10 @@ GEOM::GEOM_Object_ptr GEOM_IShapesOperations_i::GetSubShape
 CORBA::Long GEOM_IShapesOperations_i::GetSubShapeIndex
   (GEOM::GEOM_Object_ptr theMainShape, GEOM::GEOM_Object_ptr theSubShape)
 {
-  if (theMainShape == NULL || theSubShape == NULL) return -1;
-
   //Get the reference shapes
-  Handle(GEOM_Object) aMainShapeRef = GetOperations()->GetEngine()->GetObject
-    (theMainShape->GetStudyID(), theMainShape->GetEntry());
-  Handle(GEOM_Object) aSubShapeRef = GetOperations()->GetEngine()->GetObject
-    (theSubShape->GetStudyID(), theSubShape->GetEntry());
+  Handle(GEOM_Object) aMainShapeRef = GetObjectImpl(theMainShape);
+  Handle(GEOM_Object) aSubShapeRef = GetObjectImpl(theSubShape);
+
   if (aMainShapeRef.IsNull() || aSubShapeRef.IsNull()) return -1;
 
   //Get the unique ID of <theSubShape> inside <theMainShape>
@@ -563,13 +519,10 @@ CORBA::Long GEOM_IShapesOperations_i::GetSubShapeIndex
 CORBA::Long GEOM_IShapesOperations_i::GetTopologyIndex
   (GEOM::GEOM_Object_ptr theMainShape, GEOM::GEOM_Object_ptr theSubShape)
 {
-  if (theMainShape == NULL || theSubShape == NULL) return -1;
-
   //Get the reference shapes
-  Handle(GEOM_Object) aMainShapeRef = GetOperations()->GetEngine()->GetObject
-    (theMainShape->GetStudyID(), theMainShape->GetEntry());
-  Handle(GEOM_Object) aSubShapeRef = GetOperations()->GetEngine()->GetObject
-    (theSubShape->GetStudyID(), theSubShape->GetEntry());
+  Handle(GEOM_Object) aMainShapeRef = GetObjectImpl(theMainShape);
+  Handle(GEOM_Object) aSubShapeRef = GetObjectImpl(theSubShape);
+
   if (aMainShapeRef.IsNull() || aSubShapeRef.IsNull()) return -1;
 
   //Get an ID of <theSubShape>, unique among all sub-shapes of <theMainShape> of the same type
@@ -587,12 +540,8 @@ CORBA::Long GEOM_IShapesOperations_i::GetTopologyIndex
 //=============================================================================
 char* GEOM_IShapesOperations_i::GetShapeTypeString (GEOM::GEOM_Object_ptr theShape)
 {
-  if (theShape == NULL) return NULL;
-
   //Get the reference shape
-  Handle(GEOM_Object) aShape = GetOperations()->GetEngine()->GetObject
-    (theShape->GetStudyID(), theShape->GetEntry());
-
+  Handle(GEOM_Object) aShape = GetObjectImpl(theShape);
   if (aShape.IsNull()) return NULL;
 
   // Get shape parameters
@@ -607,10 +556,8 @@ char* GEOM_IShapesOperations_i::GetShapeTypeString (GEOM::GEOM_Object_ptr theSha
 //=============================================================================
 CORBA::Long GEOM_IShapesOperations_i::NumberOfFaces (GEOM::GEOM_Object_ptr theShape)
 {
-  if (theShape == NULL) return -1;
-
-  Handle(GEOM_Object) aShape = GetOperations()->GetEngine()->GetObject
-    (theShape->GetStudyID(), theShape->GetEntry());
+  Handle(GEOM_Object) aShape = GetObjectImpl(theShape);
+  if (aShape.IsNull()) return -1;
 
   CORBA::Long aNb = GetOperations()->NumberOfFaces(aShape);
   if (!GetOperations()->IsDone()) return -1;
@@ -625,10 +572,8 @@ CORBA::Long GEOM_IShapesOperations_i::NumberOfFaces (GEOM::GEOM_Object_ptr theSh
 //=============================================================================
 CORBA::Long GEOM_IShapesOperations_i::NumberOfEdges (GEOM::GEOM_Object_ptr theShape)
 {
-  if (theShape == NULL) return -1;
-
-  Handle(GEOM_Object) aShape = GetOperations()->GetEngine()->GetObject
-    (theShape->GetStudyID(), theShape->GetEntry());
+  Handle(GEOM_Object) aShape = GetObjectImpl(theShape);
+  if (aShape.IsNull()) return -1;
 
   CORBA::Long aNb = GetOperations()->NumberOfEdges(aShape);
   if (!GetOperations()->IsDone()) return -1;
@@ -649,12 +594,8 @@ GEOM::GEOM_Object_ptr GEOM_IShapesOperations_i::ChangeOrientation
   //Set a not done flag
   GetOperations()->SetNotDone();
 
-  if (theShape == NULL) return aGEOMObject._retn();
-
   //Get the reference objects
-  Handle(GEOM_Object) aShape = GetOperations()->GetEngine()->GetObject
-    (theShape->GetStudyID(), theShape->GetEntry());
-
+  Handle(GEOM_Object) aShape = GetObjectImpl(theShape);
   if (aShape.IsNull()) return aGEOMObject._retn();
 
   //Create the Solid
@@ -676,10 +617,9 @@ GEOM::ListOfLong* GEOM_IShapesOperations_i::GetFreeFacesIDs (GEOM::GEOM_Object_p
   GetOperations()->SetNotDone();
 
   GEOM::ListOfLong_var aSeq = new GEOM::ListOfLong;
-  if (theShape == NULL) return aSeq._retn();
 
-  Handle(GEOM_Object) aShape = GetOperations()->GetEngine()->GetObject
-    (theShape->GetStudyID(), theShape->GetEntry());
+  Handle(GEOM_Object) aShape = GetObjectImpl(theShape);
+  if (aShape.IsNull()) return aSeq._retn();
 
   Handle(TColStd_HSequenceOfInteger) aHSeq =
     GetOperations()->GetFreeFacesIDs(aShape);
@@ -700,23 +640,18 @@ GEOM::ListOfLong* GEOM_IShapesOperations_i::GetFreeFacesIDs (GEOM::GEOM_Object_p
 //=============================================================================
 GEOM::ListOfGO* GEOM_IShapesOperations_i::GetSharedShapes
                                           (GEOM::GEOM_Object_ptr theShape1,
-                                          GEOM::GEOM_Object_ptr theShape2,
-                                          const CORBA::Long     theShapeType)
+                                           GEOM::GEOM_Object_ptr theShape2,
+                                           const CORBA::Long     theShapeType)
 {
   //Set a not done flag
   GetOperations()->SetNotDone();
 
   GEOM::ListOfGO_var aSeq = new GEOM::ListOfGO;
-  if (theShape1 == NULL ||
-      theShape2 == NULL) return aSeq._retn();
 
-  Handle(GEOM_Object) aShape1 = GetOperations()->GetEngine()->GetObject
-    (theShape1->GetStudyID(), theShape1->GetEntry());
-  Handle(GEOM_Object) aShape2 = GetOperations()->GetEngine()->GetObject
-    (theShape2->GetStudyID(), theShape2->GetEntry());
+  Handle(GEOM_Object) aShape1 = GetObjectImpl(theShape1);
+  Handle(GEOM_Object) aShape2 = GetObjectImpl(theShape2);
 
-  if (aShape1.IsNull() ||
-      aShape2.IsNull()) return aSeq._retn();
+  if (aShape1.IsNull() || aShape2.IsNull()) return aSeq._retn();
 
   Handle(TColStd_HSequenceOfTransient) aHSeq =
     GetOperations()->GetSharedShapes(aShape1, aShape2, theShapeType);
@@ -765,22 +700,18 @@ static GEOMAlgo_State ShapeState (const GEOM::shape_state theState)
 //=============================================================================
 GEOM::ListOfGO* GEOM_IShapesOperations_i::GetShapesOnPlane
                                                 (GEOM::GEOM_Object_ptr   theShape,
-                                                const CORBA::Long       theShapeType,
-                                                GEOM::GEOM_Object_ptr   theAx1,
-                                                const GEOM::shape_state theState)
+                                                 const CORBA::Long       theShapeType,
+                                                 GEOM::GEOM_Object_ptr   theAx1,
+                                                 const GEOM::shape_state theState)
 {
   GEOM::ListOfGO_var aSeq = new GEOM::ListOfGO;
 
   //Set a not done flag
   GetOperations()->SetNotDone();
 
-  if (theShape == NULL || theAx1 == NULL) return aSeq._retn();
-
   //Get the reference objects
-  Handle(GEOM_Object) aShape = GetOperations()->GetEngine()->GetObject
-    (theShape->GetStudyID(), theShape->GetEntry());
-  Handle(GEOM_Object) anAx1 = GetOperations()->GetEngine()->GetObject
-    (theAx1->GetStudyID(), theAx1->GetEntry());
+  Handle(GEOM_Object) aShape = GetObjectImpl(theShape);
+  Handle(GEOM_Object) anAx1 = GetObjectImpl(theAx1);
 
   if (aShape.IsNull() || anAx1.IsNull()) return aSeq._retn();
 
@@ -805,25 +736,20 @@ GEOM::ListOfGO* GEOM_IShapesOperations_i::GetShapesOnPlane
 //=============================================================================
 GEOM::ListOfGO* GEOM_IShapesOperations_i::GetShapesOnPlaneWithLocation
                                                 (GEOM::GEOM_Object_ptr   theShape,
-                                                const CORBA::Long       theShapeType,
-                                                GEOM::GEOM_Object_ptr   theAx1,
-                                                GEOM::GEOM_Object_ptr   thePnt,
-                                                const GEOM::shape_state theState)
+                                                 const CORBA::Long       theShapeType,
+                                                 GEOM::GEOM_Object_ptr   theAx1,
+                                                 GEOM::GEOM_Object_ptr   thePnt,
+                                                 const GEOM::shape_state theState)
 {
   GEOM::ListOfGO_var aSeq = new GEOM::ListOfGO;
 
   //Set a not done flag
   GetOperations()->SetNotDone();
 
-  if (theShape == NULL || theAx1 == NULL || thePnt == NULL) return aSeq._retn();
-
   //Get the reference objects
-  Handle(GEOM_Object) aShape = GetOperations()->GetEngine()->GetObject
-    (theShape->GetStudyID(), theShape->GetEntry());
-  Handle(GEOM_Object) anAx1 = GetOperations()->GetEngine()->GetObject
-    (theAx1->GetStudyID(), theAx1->GetEntry());
-  Handle(GEOM_Object) anPnt = GetOperations()->GetEngine()->GetObject
-    (thePnt->GetStudyID(), thePnt->GetEntry());
+  Handle(GEOM_Object) aShape = GetObjectImpl(theShape);
+  Handle(GEOM_Object) anAx1 = GetObjectImpl(theAx1);
+  Handle(GEOM_Object) anPnt = GetObjectImpl(thePnt);
 
   if (aShape.IsNull() || anAx1.IsNull() || anPnt.IsNull()) return aSeq._retn();
 
@@ -848,23 +774,19 @@ GEOM::ListOfGO* GEOM_IShapesOperations_i::GetShapesOnPlaneWithLocation
 //=============================================================================
 GEOM::ListOfGO* GEOM_IShapesOperations_i::GetShapesOnCylinder
                                                 (GEOM::GEOM_Object_ptr   theShape,
-                                                const CORBA::Long       theShapeType,
-                                                GEOM::GEOM_Object_ptr   theAxis,
-                                                const CORBA::Double     theRadius,
-                                                const GEOM::shape_state theState)
+                                                 const CORBA::Long       theShapeType,
+                                                 GEOM::GEOM_Object_ptr   theAxis,
+                                                 const CORBA::Double     theRadius,
+                                                 const GEOM::shape_state theState)
 {
   GEOM::ListOfGO_var aSeq = new GEOM::ListOfGO;
 
   //Set a not done flag
   GetOperations()->SetNotDone();
 
-  if (theShape == NULL || theAxis == NULL) return aSeq._retn();
-
   //Get the reference objects
-  Handle(GEOM_Object) aShape = GetOperations()->GetEngine()->GetObject
-    (theShape->GetStudyID(), theShape->GetEntry());
-  Handle(GEOM_Object) anAxis = GetOperations()->GetEngine()->GetObject
-    (theAxis->GetStudyID(), theAxis->GetEntry());
+  Handle(GEOM_Object) aShape = GetObjectImpl(theShape);
+  Handle(GEOM_Object) anAxis = GetObjectImpl(theAxis);
 
   if (aShape.IsNull() || anAxis.IsNull()) return aSeq._retn();
 
@@ -889,23 +811,19 @@ GEOM::ListOfGO* GEOM_IShapesOperations_i::GetShapesOnCylinder
 //=============================================================================
 GEOM::ListOfGO* GEOM_IShapesOperations_i::GetShapesOnSphere
                                                 (GEOM::GEOM_Object_ptr   theShape,
-                                                const CORBA::Long       theShapeType,
-                                                GEOM::GEOM_Object_ptr   theCenter,
-                                                const CORBA::Double     theRadius,
-                                                const GEOM::shape_state theState)
+                                                 const CORBA::Long       theShapeType,
+                                                 GEOM::GEOM_Object_ptr   theCenter,
+                                                 const CORBA::Double     theRadius,
+                                                 const GEOM::shape_state theState)
 {
   GEOM::ListOfGO_var aSeq = new GEOM::ListOfGO;
 
   //Set a not done flag
   GetOperations()->SetNotDone();
 
-  if (theShape == NULL || theCenter == NULL) return aSeq._retn();
-
   //Get the reference objects
-  Handle(GEOM_Object) aShape = GetOperations()->GetEngine()->GetObject
-    (theShape->GetStudyID(), theShape->GetEntry());
-  Handle(GEOM_Object) aCenter = GetOperations()->GetEngine()->GetObject
-    (theCenter->GetStudyID(), theCenter->GetEntry());
+  Handle(GEOM_Object) aShape = GetObjectImpl(theShape);
+  Handle(GEOM_Object) aCenter = GetObjectImpl(theCenter);
 
   if (aShape.IsNull() || aCenter.IsNull()) return aSeq._retn();
 
@@ -942,30 +860,18 @@ GEOM::ListOfGO* GEOM_IShapesOperations_i::GetShapesOnQuadrangle
   //Set a not done flag
   GetOperations()->SetNotDone();
 
-  if (theShape            == NULL ||
-      theTopLeftPoint     == NULL ||   
-      theTopRigthPoint    == NULL || 
-      theBottomLeftPoint  == NULL ||
-      theBottomRigthPoint == NULL )
-    return aSeq._retn();
-
   //Get the reference objects
-  Handle(GEOM_Object) aShape = GetOperations()->GetEngine()->GetObject
-    (theShape->GetStudyID(), theShape->GetEntry());
-  Handle(GEOM_Object) aTopLeftPoint = GetOperations()->GetEngine()->GetObject
-    (theShape->GetStudyID(), theTopLeftPoint->GetEntry());
-  Handle(GEOM_Object) aTopRigthPoint = GetOperations()->GetEngine()->GetObject
-    (theShape->GetStudyID(), theTopRigthPoint->GetEntry());
-  Handle(GEOM_Object) aBottomLeftPoint = GetOperations()->GetEngine()->GetObject
-    (theShape->GetStudyID(), theBottomLeftPoint->GetEntry());
-  Handle(GEOM_Object) aBottomRigthPoint = GetOperations()->GetEngine()->GetObject
-    (theShape->GetStudyID(), theBottomRigthPoint->GetEntry());
+  Handle(GEOM_Object) aShape = GetObjectImpl(theShape);
+  Handle(GEOM_Object) aTopLeftPoint = GetObjectImpl(theTopLeftPoint);
+  Handle(GEOM_Object) aTopRigthPoint = GetObjectImpl(theTopRigthPoint);
+  Handle(GEOM_Object) aBottomLeftPoint = GetObjectImpl(theBottomLeftPoint);
+  Handle(GEOM_Object) aBottomRigthPoint = GetObjectImpl(theBottomRigthPoint);
 
   if (aShape.IsNull() ||
       aTopLeftPoint.IsNull() ||
       aTopRigthPoint.IsNull() ||
       aBottomLeftPoint.IsNull() ||
-      aBottomRigthPoint.IsNull() )
+      aBottomRigthPoint.IsNull())
     return aSeq._retn();
 
   //Get Shapes On Quadrangle
@@ -991,22 +897,18 @@ GEOM::ListOfGO* GEOM_IShapesOperations_i::GetShapesOnQuadrangle
 //=============================================================================
 GEOM::ListOfLong* GEOM_IShapesOperations_i::GetShapesOnPlaneIDs
                                                 (GEOM::GEOM_Object_ptr   theShape,
-                                                const CORBA::Long       theShapeType,
-                                                GEOM::GEOM_Object_ptr   theAx1,
-                                                const GEOM::shape_state theState)
+                                                 const CORBA::Long       theShapeType,
+                                                 GEOM::GEOM_Object_ptr   theAx1,
+                                                 const GEOM::shape_state theState)
 {
   GEOM::ListOfLong_var aSeq = new GEOM::ListOfLong;
 
   //Set a not done flag
   GetOperations()->SetNotDone();
 
-  if (theShape == NULL || theAx1 == NULL) return aSeq._retn();
-
   //Get the reference objects
-  Handle(GEOM_Object) aShape = GetOperations()->GetEngine()->GetObject
-    (theShape->GetStudyID(), theShape->GetEntry());
-  Handle(GEOM_Object) anAx1 = GetOperations()->GetEngine()->GetObject
-    (theAx1->GetStudyID(), theAx1->GetEntry());
+  Handle(GEOM_Object) aShape = GetObjectImpl(theShape);
+  Handle(GEOM_Object) anAx1 = GetObjectImpl(theAx1);
 
   if (aShape.IsNull() || anAx1.IsNull()) return aSeq._retn();
 
@@ -1031,31 +933,27 @@ GEOM::ListOfLong* GEOM_IShapesOperations_i::GetShapesOnPlaneIDs
 //=============================================================================
 GEOM::ListOfLong* GEOM_IShapesOperations_i::GetShapesOnPlaneWithLocationIDs
                                                 (GEOM::GEOM_Object_ptr   theShape,
-                                                const CORBA::Long       theShapeType,
-                                                GEOM::GEOM_Object_ptr   theAx1,
-                                                GEOM::GEOM_Object_ptr   thePnt,
-                                                const GEOM::shape_state theState)
+                                                 const CORBA::Long       theShapeType,
+                                                 GEOM::GEOM_Object_ptr   theAx1,
+                                                 GEOM::GEOM_Object_ptr   thePnt,
+                                                 const GEOM::shape_state theState)
 {
   GEOM::ListOfLong_var aSeq = new GEOM::ListOfLong;
 
   //Set a not done flag
   GetOperations()->SetNotDone();
 
-  if (theShape == NULL || theAx1 == NULL || thePnt == NULL) return aSeq._retn();
-
   //Get the reference objects
-  Handle(GEOM_Object) aShape = GetOperations()->GetEngine()->GetObject
-    (theShape->GetStudyID(), theShape->GetEntry());
-  Handle(GEOM_Object) anAx1 = GetOperations()->GetEngine()->GetObject
-    (theAx1->GetStudyID(), theAx1->GetEntry());
-  Handle(GEOM_Object) anPnt = GetOperations()->GetEngine()->GetObject
-    (thePnt->GetStudyID(), thePnt->GetEntry());
+  Handle(GEOM_Object) aShape = GetObjectImpl(theShape);
+  Handle(GEOM_Object) anAx1 = GetObjectImpl(theAx1);
+  Handle(GEOM_Object) anPnt = GetObjectImpl(thePnt);
 
   if (aShape.IsNull() || anAx1.IsNull() || anPnt.IsNull()) return aSeq._retn();
 
   //Get Shapes On Plane
   Handle(TColStd_HSequenceOfInteger) aHSeq =
-    GetOperations()->GetShapesOnPlaneWithLocationIDs(aShape, theShapeType, anAx1, anPnt, ShapeState(theState));
+    GetOperations()->GetShapesOnPlaneWithLocationIDs(aShape, theShapeType,
+                                                     anAx1, anPnt, ShapeState(theState));
   if (!GetOperations()->IsDone() || aHSeq.IsNull())
     return aSeq._retn();
 
@@ -1074,23 +972,19 @@ GEOM::ListOfLong* GEOM_IShapesOperations_i::GetShapesOnPlaneWithLocationIDs
 //=============================================================================
 GEOM::ListOfLong* GEOM_IShapesOperations_i::GetShapesOnCylinderIDs
                                                 (GEOM::GEOM_Object_ptr   theShape,
-                                                const CORBA::Long       theShapeType,
-                                                GEOM::GEOM_Object_ptr   theAxis,
-                                                const CORBA::Double     theRadius,
-                                                const GEOM::shape_state theState)
+                                                 const CORBA::Long       theShapeType,
+                                                 GEOM::GEOM_Object_ptr   theAxis,
+                                                 const CORBA::Double     theRadius,
+                                                 const GEOM::shape_state theState)
 {
   GEOM::ListOfLong_var aSeq = new GEOM::ListOfLong;
 
   //Set a not done flag
   GetOperations()->SetNotDone();
 
-  if (theShape == NULL || theAxis == NULL) return aSeq._retn();
-
   //Get the reference objects
-  Handle(GEOM_Object) aShape = GetOperations()->GetEngine()->GetObject
-    (theShape->GetStudyID(), theShape->GetEntry());
-  Handle(GEOM_Object) anAxis = GetOperations()->GetEngine()->GetObject
-    (theAxis->GetStudyID(), theAxis->GetEntry());
+  Handle(GEOM_Object) aShape = GetObjectImpl(theShape);
+  Handle(GEOM_Object) anAxis = GetObjectImpl(theAxis);
 
   if (aShape.IsNull() || anAxis.IsNull()) return aSeq._retn();
 
@@ -1115,23 +1009,19 @@ GEOM::ListOfLong* GEOM_IShapesOperations_i::GetShapesOnCylinderIDs
 //=============================================================================
 GEOM::ListOfLong* GEOM_IShapesOperations_i::GetShapesOnSphereIDs
                                                 (GEOM::GEOM_Object_ptr   theShape,
-                                                const CORBA::Long       theShapeType,
-                                                GEOM::GEOM_Object_ptr   theCenter,
-                                                const CORBA::Double     theRadius,
-                                                const GEOM::shape_state theState)
+                                                 const CORBA::Long       theShapeType,
+                                                 GEOM::GEOM_Object_ptr   theCenter,
+                                                 const CORBA::Double     theRadius,
+                                                 const GEOM::shape_state theState)
 {
   GEOM::ListOfLong_var aSeq = new GEOM::ListOfLong;
 
   //Set a not done flag
   GetOperations()->SetNotDone();
 
-  if (theShape == NULL || theCenter == NULL) return aSeq._retn();
-
   //Get the reference objects
-  Handle(GEOM_Object) aShape = GetOperations()->GetEngine()->GetObject
-    (theShape->GetStudyID(), theShape->GetEntry());
-  Handle(GEOM_Object) aCenter = GetOperations()->GetEngine()->GetObject
-    (theCenter->GetStudyID(), theCenter->GetEntry());
+  Handle(GEOM_Object) aShape = GetObjectImpl(theShape);
+  Handle(GEOM_Object) aCenter = GetObjectImpl(theCenter);
 
   if (aShape.IsNull() || aCenter.IsNull()) return aSeq._retn();
 
@@ -1168,24 +1058,12 @@ GEOM::ListOfLong* GEOM_IShapesOperations_i::GetShapesOnQuadrangleIDs
   //Set a not done flag
   GetOperations()->SetNotDone();
 
-  if (theShape            == NULL ||
-      theTopLeftPoint     == NULL ||   
-      theTopRigthPoint    == NULL || 
-      theBottomLeftPoint  == NULL ||
-      theBottomRigthPoint == NULL )
-    return aSeq._retn();
-
   //Get the reference objects
-  Handle(GEOM_Object) aShape = GetOperations()->GetEngine()->GetObject
-    (theShape->GetStudyID(), theShape->GetEntry());
-  Handle(GEOM_Object) aTopLeftPoint = GetOperations()->GetEngine()->GetObject
-    (theShape->GetStudyID(), theTopLeftPoint->GetEntry());
-  Handle(GEOM_Object) aTopRigthPoint = GetOperations()->GetEngine()->GetObject
-    (theShape->GetStudyID(), theTopRigthPoint->GetEntry());
-  Handle(GEOM_Object) aBottomLeftPoint = GetOperations()->GetEngine()->GetObject
-    (theShape->GetStudyID(), theBottomLeftPoint->GetEntry());
-  Handle(GEOM_Object) aBottomRigthPoint = GetOperations()->GetEngine()->GetObject
-    (theShape->GetStudyID(), theBottomRigthPoint->GetEntry());
+  Handle(GEOM_Object) aShape = GetObjectImpl(theShape);
+  Handle(GEOM_Object) aTopLeftPoint = GetObjectImpl(theTopLeftPoint);
+  Handle(GEOM_Object) aTopRigthPoint = GetObjectImpl(theTopRigthPoint);
+  Handle(GEOM_Object) aBottomLeftPoint = GetObjectImpl(theBottomLeftPoint);
+  Handle(GEOM_Object) aBottomRigthPoint = GetObjectImpl(theBottomRigthPoint);
 
   if (aShape.IsNull() ||
       aTopLeftPoint.IsNull() ||
@@ -1226,14 +1104,9 @@ GEOM::ListOfGO* GEOM_IShapesOperations_i::GetShapesOnBox
   //Set a not done flag
   GetOperations()->SetNotDone();
 
-  if ( theShape == NULL ||  theBox == NULL )
-    return aSeq._retn();
-
   //Get the reference objects
-  Handle(GEOM_Object) aShape = GetOperations()->GetEngine()->GetObject
-    (theShape->GetStudyID(), theShape->GetEntry());
-  Handle(GEOM_Object) aBox = GetOperations()->GetEngine()->GetObject
-    (theShape->GetStudyID(), theBox->GetEntry());
+  Handle(GEOM_Object) aShape = GetObjectImpl(theShape);
+  Handle(GEOM_Object) aBox = GetObjectImpl(theBox);
 
   if (aShape.IsNull() || aBox.IsNull() )
     return aSeq._retn();
@@ -1259,7 +1132,7 @@ GEOM::ListOfGO* GEOM_IShapesOperations_i::GetShapesOnBox
 //=============================================================================
 GEOM::ListOfLong* GEOM_IShapesOperations_i::GetShapesOnBoxIDs
                                                 (GEOM::GEOM_Object_ptr theBox,
-                                                GEOM::GEOM_Object_ptr theShape,
+                                                 GEOM::GEOM_Object_ptr theShape,
                                                  CORBA::Long           theShapeType,
                                                  GEOM::shape_state     theState)
 {
@@ -1268,14 +1141,9 @@ GEOM::ListOfLong* GEOM_IShapesOperations_i::GetShapesOnBoxIDs
   //Set a not done flag
   GetOperations()->SetNotDone();
 
-  if ( theShape == NULL ||  theBox == NULL )
-    return aSeq._retn();
-
   //Get the reference objects
-  Handle(GEOM_Object) aShape = GetOperations()->GetEngine()->GetObject
-    (theShape->GetStudyID(), theShape->GetEntry());
-  Handle(GEOM_Object) aBox = GetOperations()->GetEngine()->GetObject
-    (theShape->GetStudyID(), theBox->GetEntry());
+  Handle(GEOM_Object) aShape = GetObjectImpl(theShape);
+  Handle(GEOM_Object) aBox = GetObjectImpl(theBox);
 
   if (aShape.IsNull() || aBox.IsNull() )
     return aSeq._retn();
@@ -1302,23 +1170,18 @@ GEOM::ListOfLong* GEOM_IShapesOperations_i::GetShapesOnBoxIDs
 //=============================================================================
 GEOM::ListOfGO* GEOM_IShapesOperations_i::GetShapesOnShape
                                            (GEOM::GEOM_Object_ptr theCheckShape,
-                                           GEOM::GEOM_Object_ptr theShape,
-                                           CORBA::Short          theShapeType,
-                                           GEOM::shape_state     theState)
+                                            GEOM::GEOM_Object_ptr theShape,
+                                            CORBA::Short          theShapeType,
+                                            GEOM::shape_state     theState)
 {
   GEOM::ListOfGO_var aSeq = new GEOM::ListOfGO;
 
   //Set a not done flag
   GetOperations()->SetNotDone();
 
-  if ( theShape == NULL ||  theCheckShape == NULL )
-    return aSeq._retn();
-
   //Get the reference objects
-  Handle(GEOM_Object) aShape = GetOperations()->GetEngine()->GetObject
-    (theShape->GetStudyID(), theShape->GetEntry());
-  Handle(GEOM_Object) aCheckShape = GetOperations()->GetEngine()->GetObject
-    (theShape->GetStudyID(), theCheckShape->GetEntry());
+  Handle(GEOM_Object) aShape = GetObjectImpl(theShape);
+  Handle(GEOM_Object) aCheckShape = GetObjectImpl(theCheckShape);
 
   if (aShape.IsNull() || aCheckShape.IsNull() )
     return aSeq._retn();
@@ -1346,23 +1209,18 @@ GEOM::ListOfGO* GEOM_IShapesOperations_i::GetShapesOnShape
 //=============================================================================
 GEOM::GEOM_Object_ptr GEOM_IShapesOperations_i::GetShapesOnShapeAsCompound
                                            (GEOM::GEOM_Object_ptr theCheckShape,
-                                           GEOM::GEOM_Object_ptr theShape,
-                                           CORBA::Short          theShapeType,
-                                           GEOM::shape_state     theState)
+                                            GEOM::GEOM_Object_ptr theShape,
+                                            CORBA::Short          theShapeType,
+                                            GEOM::shape_state     theState)
 {
   GEOM::GEOM_Object_var aGEOMObject;
 
   //Set a not done flag
   GetOperations()->SetNotDone();
 
-  if ( theShape == NULL ||  theCheckShape == NULL )
-    return aGEOMObject._retn();
-
   //Get the reference objects
-  Handle(GEOM_Object) aShape = GetOperations()->GetEngine()->GetObject
-    (theShape->GetStudyID(), theShape->GetEntry());
-  Handle(GEOM_Object) aCheckShape = GetOperations()->GetEngine()->GetObject
-    (theShape->GetStudyID(), theCheckShape->GetEntry());
+  Handle(GEOM_Object) aShape = GetObjectImpl(theShape);
+  Handle(GEOM_Object) aCheckShape = GetObjectImpl(theCheckShape);
 
   if (aShape.IsNull() || aCheckShape.IsNull() )
     return aGEOMObject._retn();
@@ -1385,23 +1243,18 @@ GEOM::GEOM_Object_ptr GEOM_IShapesOperations_i::GetShapesOnShapeAsCompound
 //=============================================================================
 GEOM::ListOfLong* GEOM_IShapesOperations_i::GetShapesOnShapeIDs
                                            (GEOM::GEOM_Object_ptr theCheckShape,
-                                           GEOM::GEOM_Object_ptr theShape,
-                                           CORBA::Short          theShapeType,
-                                           GEOM::shape_state     theState)
+                                            GEOM::GEOM_Object_ptr theShape,
+                                            CORBA::Short          theShapeType,
+                                            GEOM::shape_state     theState)
 {
   GEOM::ListOfLong_var aSeq = new GEOM::ListOfLong;
 
   //Set a not done flag
   GetOperations()->SetNotDone();
 
-  if ( theShape == NULL ||  theCheckShape == NULL )
-    return aSeq._retn();
-
   //Get the reference objects
-  Handle(GEOM_Object) aShape = GetOperations()->GetEngine()->GetObject
-    (theShape->GetStudyID(), theShape->GetEntry());
-  Handle(GEOM_Object) aCheckShape = GetOperations()->GetEngine()->GetObject
-    (theShape->GetStudyID(), theCheckShape->GetEntry());
+  Handle(GEOM_Object) aShape = GetObjectImpl(theShape);
+  Handle(GEOM_Object) aCheckShape = GetObjectImpl(theCheckShape);
 
   if (aShape.IsNull() || aCheckShape.IsNull() )
     return aSeq._retn();
@@ -1428,21 +1281,16 @@ GEOM::ListOfLong* GEOM_IShapesOperations_i::GetShapesOnShapeIDs
 //=============================================================================
 GEOM::GEOM_Object_ptr GEOM_IShapesOperations_i::GetInPlace
                                           (GEOM::GEOM_Object_ptr theShapeWhere,
-                                          GEOM::GEOM_Object_ptr theShapeWhat)
+                                           GEOM::GEOM_Object_ptr theShapeWhat)
 {
   GEOM::GEOM_Object_var aGEOMObject;
 
   //Set a not done flag
   GetOperations()->SetNotDone();
 
-  if (theShapeWhere == NULL ||
-      theShapeWhat == NULL) return aGEOMObject._retn();
-
   //Get the reference objects
-  Handle(GEOM_Object) aShapeWhere = GetOperations()->GetEngine()->GetObject
-    (theShapeWhere->GetStudyID(), theShapeWhere->GetEntry());
-  Handle(GEOM_Object) aShapeWhat = GetOperations()->GetEngine()->GetObject
-    (theShapeWhat->GetStudyID(), theShapeWhat->GetEntry());
+  Handle(GEOM_Object) aShapeWhere = GetObjectImpl(theShapeWhere);
+  Handle(GEOM_Object) aShapeWhat = GetObjectImpl(theShapeWhat);
 
   if (aShapeWhere.IsNull() ||
       aShapeWhat.IsNull()) return aGEOMObject._retn();
@@ -1463,21 +1311,16 @@ GEOM::GEOM_Object_ptr GEOM_IShapesOperations_i::GetInPlace
 //=============================================================================
 GEOM::GEOM_Object_ptr GEOM_IShapesOperations_i::GetInPlaceByHistory
                                           (GEOM::GEOM_Object_ptr theShapeWhere,
-                                          GEOM::GEOM_Object_ptr theShapeWhat)
+                                           GEOM::GEOM_Object_ptr theShapeWhat)
 {
   GEOM::GEOM_Object_var aGEOMObject;
 
   //Set a not done flag
   GetOperations()->SetNotDone();
 
-  if (theShapeWhere == NULL ||
-      theShapeWhat == NULL) return aGEOMObject._retn();
-
   //Get the reference objects
-  Handle(GEOM_Object) aShapeWhere = GetOperations()->GetEngine()->GetObject
-    (theShapeWhere->GetStudyID(), theShapeWhere->GetEntry());
-  Handle(GEOM_Object) aShapeWhat = GetOperations()->GetEngine()->GetObject
-    (theShapeWhat->GetStudyID(), theShapeWhat->GetEntry());
+  Handle(GEOM_Object) aShapeWhere = GetObjectImpl(theShapeWhere);
+  Handle(GEOM_Object) aShapeWhat = GetObjectImpl(theShapeWhat);
 
   if (aShapeWhere.IsNull() ||
       aShapeWhat.IsNull()) return aGEOMObject._retn();
@@ -1498,21 +1341,16 @@ GEOM::GEOM_Object_ptr GEOM_IShapesOperations_i::GetInPlaceByHistory
 //=============================================================================
 GEOM::GEOM_Object_ptr GEOM_IShapesOperations_i::GetSame
                                           (GEOM::GEOM_Object_ptr theShapeWhere,
-                                          GEOM::GEOM_Object_ptr theShapeWhat)
+                                           GEOM::GEOM_Object_ptr theShapeWhat)
 {
   GEOM::GEOM_Object_var aGEOMObject;
 
   //Set a not done flag
   GetOperations()->SetNotDone();
 
-  if (theShapeWhere == NULL ||
-      theShapeWhat == NULL) return aGEOMObject._retn();
-
   //Get the reference objects
-  Handle(GEOM_Object) aShapeWhere = GetOperations()->GetEngine()->GetObject
-    (theShapeWhere->GetStudyID(), theShapeWhere->GetEntry());
-  Handle(GEOM_Object) aShapeWhat = GetOperations()->GetEngine()->GetObject
-    (theShapeWhat->GetStudyID(), theShapeWhat->GetEntry());
+  Handle(GEOM_Object) aShapeWhere = GetObjectImpl(theShapeWhere);
+  Handle(GEOM_Object) aShapeWhat = GetObjectImpl(theShapeWhat);
 
   if (aShapeWhere.IsNull() ||
       aShapeWhat.IsNull()) return aGEOMObject._retn();
@@ -1525,4 +1363,3 @@ GEOM::GEOM_Object_ptr GEOM_IShapesOperations_i::GetSame
 
   return GetObject(anObject);
 }
-
index 0985505c7edfbbe5ce510d1f6b2e6e463628e008..3b21e8f678f1aa4234ca7074bb30d43964f5f982 100644 (file)
@@ -18,7 +18,7 @@
 //  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
 //
 //  See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
-//
+
 #include <Standard_Stream.hxx>
 
 #include "GEOM_ITransformOperations_i.hh"
@@ -42,8 +42,8 @@
 //=============================================================================
 
 GEOM_ITransformOperations_i::GEOM_ITransformOperations_i (PortableServer::POA_ptr thePOA,
-                                                         GEOM::GEOM_Gen_ptr theEngine,
-                                                         ::GEOMImpl_ITransformOperations* theImpl)
+                                                          GEOM::GEOM_Gen_ptr theEngine,
+                                                          ::GEOMImpl_ITransformOperations* theImpl)
      :GEOM_IOperations_i(thePOA, theEngine, theImpl)
 {
   MESSAGE("GEOM_ITransformOperations_i::GEOM_ITransformOperations_i");
@@ -68,17 +68,17 @@ GEOM_ITransformOperations_i::~GEOM_ITransformOperations_i()
 //=============================================================================
 GEOM::GEOM_Object_ptr GEOM_ITransformOperations_i::TranslateTwoPoints
                                              (GEOM::GEOM_Object_ptr theObject,
-                                             GEOM::GEOM_Object_ptr thePoint1,
-                                             GEOM::GEOM_Object_ptr thePoint2)
+                                              GEOM::GEOM_Object_ptr thePoint1,
+                                              GEOM::GEOM_Object_ptr thePoint2)
 {
   //Set a not done flag
   GetOperations()->SetNotDone();
   GEOM::GEOM_Object_var aGEOMObject;
 
-  if (thePoint1 == NULL || thePoint2 == NULL || theObject == NULL) return aGEOMObject._retn();
+  if (CORBA::is_nil(theObject)) return aGEOMObject._retn();
 
   //check if the object is a subshape
-  if(!theObject->IsMainShape()) {
+  if (!theObject->IsMainShape()) {
     GetOperations()->SetErrorCode(SUBSHAPE_ERROR);
     return aGEOMObject._retn();
   }
@@ -86,21 +86,15 @@ GEOM::GEOM_Object_ptr GEOM_ITransformOperations_i::TranslateTwoPoints
   aGEOMObject = GEOM::GEOM_Object::_duplicate(theObject);
 
   //Get the object itself
-  CORBA::String_var anEntry = theObject->GetEntry();
-  Handle(GEOM_Object) anObject =
-    GetOperations()->GetEngine()->GetObject(theObject->GetStudyID(), anEntry);
+  Handle(GEOM_Object) anObject = GetObjectImpl(theObject);
   if (anObject.IsNull()) return aGEOMObject._retn();
 
   //Get the first point of translation
-  CORBA::String_var aP1Entry = thePoint1->GetEntry();
-  Handle(GEOM_Object) aPoint1 =
-    GetOperations()->GetEngine()->GetObject(thePoint1->GetStudyID(), aP1Entry);
+  Handle(GEOM_Object) aPoint1 = GetObjectImpl(thePoint1);
   if (aPoint1.IsNull()) return aGEOMObject._retn();
 
   //Get the second point of translation
-  CORBA::String_var aP2Entry = thePoint2->GetEntry();
-  Handle(GEOM_Object) aPoint2 =
-    GetOperations()->GetEngine()->GetObject(thePoint2->GetStudyID(), aP2Entry);
+  Handle(GEOM_Object) aPoint2 = GetObjectImpl(thePoint2);
   if (aPoint2.IsNull()) return aGEOMObject._retn();
 
   //Perform the translation
@@ -116,32 +110,24 @@ GEOM::GEOM_Object_ptr GEOM_ITransformOperations_i::TranslateTwoPoints
 //=============================================================================
 GEOM::GEOM_Object_ptr GEOM_ITransformOperations_i::TranslateTwoPointsCopy
                                              (GEOM::GEOM_Object_ptr theObject,
-                                             GEOM::GEOM_Object_ptr thePoint1,
-                                             GEOM::GEOM_Object_ptr thePoint2)
+                                              GEOM::GEOM_Object_ptr thePoint1,
+                                              GEOM::GEOM_Object_ptr thePoint2)
 {
   GEOM::GEOM_Object_var aGEOMObject;
 
   //Set a not done flag
   GetOperations()->SetNotDone();
 
-  if (thePoint1 == NULL || thePoint2 == NULL || theObject == NULL) return aGEOMObject._retn();
-
   //Get the object itself
-  CORBA::String_var anEntry = theObject->GetEntry();
-  Handle(GEOM_Object) aBasicObject =
-    GetOperations()->GetEngine()->GetObject(theObject->GetStudyID(), anEntry);
+  Handle(GEOM_Object) aBasicObject = GetObjectImpl(theObject);
   if (aBasicObject.IsNull()) return aGEOMObject._retn();
 
   //Get the first point of translation
-  CORBA::String_var aP1Entry = thePoint1->GetEntry();
-  Handle(GEOM_Object) aPoint1 =
-    GetOperations()->GetEngine()->GetObject(thePoint1->GetStudyID(), aP1Entry);
+  Handle(GEOM_Object) aPoint1 = GetObjectImpl(thePoint1);
   if (aPoint1.IsNull()) return aGEOMObject._retn();
 
   //Get the second point of translation
-  CORBA::String_var aP2Entry = thePoint2->GetEntry();
-  Handle(GEOM_Object) aPoint2 =
-    GetOperations()->GetEngine()->GetObject(thePoint2->GetStudyID(), aP2Entry);
+  Handle(GEOM_Object) aPoint2 = GetObjectImpl(thePoint2);
   if (aPoint2.IsNull()) return aGEOMObject._retn();
 
   //Create the translated shape
@@ -159,17 +145,17 @@ GEOM::GEOM_Object_ptr GEOM_ITransformOperations_i::TranslateTwoPointsCopy
  */
 //=============================================================================
 GEOM::GEOM_Object_ptr GEOM_ITransformOperations_i::TranslateDXDYDZ
-                                                   (GEOM::GEOM_Object_ptr theObject,
-                                                   CORBA::Double theDX, CORBA::Double theDY, CORBA::Double theDZ)
+                      (GEOM::GEOM_Object_ptr theObject,
+                       CORBA::Double theDX, CORBA::Double theDY, CORBA::Double theDZ)
 {
   //Set a not done flag
   GetOperations()->SetNotDone();
-  GEOM::GEOM_Object_var aGEOMObject ;
+  GEOM::GEOM_Object_var aGEOMObject;
 
-  if (theObject == NULL) return aGEOMObject._retn();
+  if (CORBA::is_nil(theObject)) return aGEOMObject._retn();
 
   //check if the object is a subshape
-  if(!theObject->IsMainShape()) {
+  if (!theObject->IsMainShape()) {
     GetOperations()->SetErrorCode(SUBSHAPE_ERROR);
     return aGEOMObject._retn();
   }
@@ -177,9 +163,7 @@ GEOM::GEOM_Object_ptr GEOM_ITransformOperations_i::TranslateDXDYDZ
   aGEOMObject = GEOM::GEOM_Object::_duplicate(theObject);
 
   //Get the object itself
-  CORBA::String_var anEntry = theObject->GetEntry();
-  Handle(GEOM_Object) anObject =
-    GetOperations()->GetEngine()->GetObject(theObject->GetStudyID(), anEntry);
+  Handle(GEOM_Object) anObject = GetObjectImpl(theObject);
   if (anObject.IsNull()) return aGEOMObject._retn();
 
   //Perform the translation
@@ -188,7 +172,6 @@ GEOM::GEOM_Object_ptr GEOM_ITransformOperations_i::TranslateDXDYDZ
   return aGEOMObject._retn();
 }
 
-
 //=============================================================================
 /*!
  *  TranslateDXDYDZCopy
@@ -196,19 +179,15 @@ GEOM::GEOM_Object_ptr GEOM_ITransformOperations_i::TranslateDXDYDZ
 //=============================================================================
 GEOM::GEOM_Object_ptr GEOM_ITransformOperations_i::TranslateDXDYDZCopy
                                              (GEOM::GEOM_Object_ptr theObject,
-                                             CORBA::Double theDX, CORBA::Double theDY, CORBA::Double theDZ)
+                                              CORBA::Double theDX, CORBA::Double theDY, CORBA::Double theDZ)
 {
   GEOM::GEOM_Object_var aGEOMObject;
 
   //Set a not done flag
   GetOperations()->SetNotDone();
 
-  if (theObject == NULL) return aGEOMObject._retn();
-
   //Get the object itself
-  CORBA::String_var anEntry = theObject->GetEntry();
-  Handle(GEOM_Object) aBasicObject =
-    GetOperations()->GetEngine()->GetObject(theObject->GetStudyID(), anEntry);
+  Handle(GEOM_Object) aBasicObject = GetObjectImpl(theObject);
   if (aBasicObject.IsNull()) return aGEOMObject._retn();
 
   //Create the translated shape
@@ -220,7 +199,6 @@ GEOM::GEOM_Object_ptr GEOM_ITransformOperations_i::TranslateDXDYDZCopy
   return GetObject(anObject);
 }
 
-
 //=============================================================================
 /*!
  *  TranslateVector
@@ -228,16 +206,16 @@ GEOM::GEOM_Object_ptr GEOM_ITransformOperations_i::TranslateDXDYDZCopy
 //=============================================================================
 GEOM::GEOM_Object_ptr GEOM_ITransformOperations_i::TranslateVector
                                             (GEOM::GEOM_Object_ptr theObject,
-                                            GEOM::GEOM_Object_ptr theVector)
+                                             GEOM::GEOM_Object_ptr theVector)
 {
   //Set a not done flag
   GetOperations()->SetNotDone();
   GEOM::GEOM_Object_var aGEOMObject;
 
-  if (theObject == NULL || theVector == NULL) return aGEOMObject._retn();
+  if (CORBA::is_nil(theObject)) return aGEOMObject._retn();
 
   //check if the object is a subshape
-  if(!theObject->IsMainShape()) {
+  if (!theObject->IsMainShape()) {
     GetOperations()->SetErrorCode(SUBSHAPE_ERROR);
     return aGEOMObject._retn();
   }
@@ -245,15 +223,11 @@ GEOM::GEOM_Object_ptr GEOM_ITransformOperations_i::TranslateVector
   aGEOMObject = GEOM::GEOM_Object::_duplicate(theObject);
 
   //Get the object itself
-  CORBA::String_var anEntry = theObject->GetEntry();
-  Handle(GEOM_Object) anObject =
-    GetOperations()->GetEngine()->GetObject(theObject->GetStudyID(), anEntry);
+  Handle(GEOM_Object) anObject = GetObjectImpl(theObject);
   if (anObject.IsNull()) return aGEOMObject._retn();
 
   //Get the vector of translation
-  CORBA::String_var aVEntry = theVector->GetEntry();
-  Handle(GEOM_Object) aVector =
-    GetOperations()->GetEngine()->GetObject(theVector->GetStudyID(), aVEntry);
+  Handle(GEOM_Object) aVector = GetObjectImpl(theVector);
   if (aVector.IsNull()) return aGEOMObject._retn();
 
   //Perform the translation
@@ -269,25 +243,19 @@ GEOM::GEOM_Object_ptr GEOM_ITransformOperations_i::TranslateVector
 //=============================================================================
 GEOM::GEOM_Object_ptr GEOM_ITransformOperations_i::TranslateVectorCopy
                                             (GEOM::GEOM_Object_ptr theObject,
-                                            GEOM::GEOM_Object_ptr theVector)
+                                             GEOM::GEOM_Object_ptr theVector)
 {
   GEOM::GEOM_Object_var aGEOMObject;
 
   //Set a not done flag
   GetOperations()->SetNotDone();
 
-  if (theObject == NULL || theVector == NULL) return aGEOMObject._retn();
-
   //Get the object itself
-  CORBA::String_var anEntry = theObject->GetEntry();
-  Handle(GEOM_Object) aBasicObject =
-    GetOperations()->GetEngine()->GetObject(theObject->GetStudyID(), anEntry);
+  Handle(GEOM_Object) aBasicObject = GetObjectImpl(theObject);
   if (aBasicObject.IsNull()) return aGEOMObject._retn();
 
   //Get the vector of translation
-  CORBA::String_var aVEntry = theVector->GetEntry();
-  Handle(GEOM_Object) aVector =
-    GetOperations()->GetEngine()->GetObject(theVector->GetStudyID(), aVEntry);
+  Handle(GEOM_Object) aVector = GetObjectImpl(theVector);
   if (aVector.IsNull()) return aGEOMObject._retn();
 
   //Perform the translation
@@ -305,14 +273,14 @@ GEOM::GEOM_Object_ptr GEOM_ITransformOperations_i::TranslateVectorCopy
 //=============================================================================
 GEOM::GEOM_Object_ptr GEOM_ITransformOperations_i::TranslateVectorDistance
                                             (GEOM::GEOM_Object_ptr theObject,
-                                            GEOM::GEOM_Object_ptr theVector,
-                                            CORBA::Double theDistance,
-                                            CORBA::Boolean theCopy)
+                                             GEOM::GEOM_Object_ptr theVector,
+                                             CORBA::Double theDistance,
+                                             CORBA::Boolean theCopy)
 {
   GEOM::GEOM_Object_var aGEOMObject;
   GetOperations()->SetNotDone(); //Set a not done flag
 
-  if (theObject == NULL || theVector == NULL) return aGEOMObject._retn();
+  if (CORBA::is_nil(theObject)) return aGEOMObject._retn();
 
   //check if the object is a subshape
   if (!theCopy && !theObject->IsMainShape()) {
@@ -324,15 +292,11 @@ GEOM::GEOM_Object_ptr GEOM_ITransformOperations_i::TranslateVectorDistance
     aGEOMObject = GEOM::GEOM_Object::_duplicate(theObject);
 
   //Get the object itself
-  CORBA::String_var anEntry = theObject->GetEntry();
-  Handle(GEOM_Object) aBasicObject =
-    GetOperations()->GetEngine()->GetObject(theObject->GetStudyID(), anEntry);
+  Handle(GEOM_Object) aBasicObject = GetObjectImpl(theObject);
   if (aBasicObject.IsNull()) return aGEOMObject._retn();
 
   //Get the vector of translation
-  CORBA::String_var aVecEntry = theVector->GetEntry();
-  Handle(GEOM_Object) aVector =
-    GetOperations()->GetEngine()->GetObject(theVector->GetStudyID(), aVecEntry);
+  Handle(GEOM_Object) aVector = GetObjectImpl(theVector);
   if (aVector.IsNull()) return aGEOMObject._retn();
 
   //Perform the translation
@@ -355,17 +319,17 @@ GEOM::GEOM_Object_ptr GEOM_ITransformOperations_i::TranslateVectorDistance
  */
 //=============================================================================
 GEOM::GEOM_Object_ptr GEOM_ITransformOperations_i::Rotate (GEOM::GEOM_Object_ptr theObject,
-                                                          GEOM::GEOM_Object_ptr theAxis,
-                                                          CORBA::Double theAngle)
+                                                           GEOM::GEOM_Object_ptr theAxis,
+                                                           CORBA::Double theAngle)
 {
   //Set a not done flag
   GetOperations()->SetNotDone();
   GEOM::GEOM_Object_var aGEOMObject;
 
-  if (theObject == NULL || theAxis == NULL) return aGEOMObject._retn();
+  if (CORBA::is_nil(theObject)) return aGEOMObject._retn();
 
   //check if the object is a subshape
-  if(!theObject->IsMainShape()) {
+  if (!theObject->IsMainShape()) {
     GetOperations()->SetErrorCode(SUBSHAPE_ERROR);
     return aGEOMObject._retn();
   }
@@ -373,15 +337,11 @@ GEOM::GEOM_Object_ptr GEOM_ITransformOperations_i::Rotate (GEOM::GEOM_Object_ptr
   aGEOMObject = GEOM::GEOM_Object::_duplicate(theObject);
 
   //Get the object itself
-  CORBA::String_var anEntry = theObject->GetEntry();
-  Handle(GEOM_Object) anObject =
-    GetOperations()->GetEngine()->GetObject(theObject->GetStudyID(), anEntry);
+  Handle(GEOM_Object) anObject = GetObjectImpl(theObject);
   if (anObject.IsNull()) return aGEOMObject._retn();
 
   //Get the axis of revolution
-  CORBA::String_var anAEntry = theAxis->GetEntry();
-  Handle(GEOM_Object) anAxis =
-    GetOperations()->GetEngine()->GetObject(theAxis->GetStudyID(), anAEntry);
+  Handle(GEOM_Object) anAxis = GetObjectImpl(theAxis);
   if (anAxis.IsNull()) return aGEOMObject._retn();
 
   //Perform the rotation
@@ -396,26 +356,20 @@ GEOM::GEOM_Object_ptr GEOM_ITransformOperations_i::Rotate (GEOM::GEOM_Object_ptr
  */
 //=============================================================================
 GEOM::GEOM_Object_ptr GEOM_ITransformOperations_i::RotateCopy (GEOM::GEOM_Object_ptr theObject,
-                                                              GEOM::GEOM_Object_ptr theAxis,
-                                                              CORBA::Double theAngle)
+                                                               GEOM::GEOM_Object_ptr theAxis,
+                                                               CORBA::Double theAngle)
 {
   GEOM::GEOM_Object_var aGEOMObject;
 
   //Set a not done flag
   GetOperations()->SetNotDone();
 
-  if (theObject == NULL || theAxis == NULL) return aGEOMObject._retn();
-
   //Get the object itself
-  CORBA::String_var anEntry = theObject->GetEntry();
-  Handle(GEOM_Object) aBasicObject =
-    GetOperations()->GetEngine()->GetObject(theObject->GetStudyID(), anEntry);
+  Handle(GEOM_Object) aBasicObject = GetObjectImpl(theObject);
   if (aBasicObject.IsNull()) return aGEOMObject._retn();
 
   //Get the axis of rotation
-  CORBA::String_var anAEntry = theAxis->GetEntry();
-  Handle(GEOM_Object) anAxis =
-    GetOperations()->GetEngine()->GetObject(theAxis->GetStudyID(), anAEntry);
+  Handle(GEOM_Object) anAxis = GetObjectImpl(theAxis);
   if (anAxis.IsNull()) return aGEOMObject._retn();
 
   //Perform the rotation
@@ -426,7 +380,6 @@ GEOM::GEOM_Object_ptr GEOM_ITransformOperations_i::RotateCopy (GEOM::GEOM_Object
   return GetObject(anObject);
 }
 
-
 //=============================================================================
 /*!
  *  MirrorPlane
@@ -434,14 +387,14 @@ GEOM::GEOM_Object_ptr GEOM_ITransformOperations_i::RotateCopy (GEOM::GEOM_Object
 //=============================================================================
 GEOM::GEOM_Object_ptr GEOM_ITransformOperations_i::MirrorPlane
                                             (GEOM::GEOM_Object_ptr theObject,
-                                            GEOM::GEOM_Object_ptr thePlane)
+                                             GEOM::GEOM_Object_ptr thePlane)
 {
   GEOM::GEOM_Object_var aGEOMObject = GEOM::GEOM_Object::_duplicate(theObject);
 
   //Set a not done flag
   GetOperations()->SetNotDone();
 
-  if (theObject == NULL || thePlane == NULL) return aGEOMObject._retn();
+  if (CORBA::is_nil(theObject)) return aGEOMObject._retn();
 
   //check if the object is a subshape
   if (!theObject->IsMainShape()) {
@@ -450,15 +403,11 @@ GEOM::GEOM_Object_ptr GEOM_ITransformOperations_i::MirrorPlane
   }
 
   //Get the object itself
-  CORBA::String_var anEntry = theObject->GetEntry();
-  Handle(GEOM_Object) anObject =
-    GetOperations()->GetEngine()->GetObject(theObject->GetStudyID(), anEntry);
+  Handle(GEOM_Object) anObject = GetObjectImpl(theObject);
   if (anObject.IsNull()) return aGEOMObject._retn();
 
   //Get the plane
-  CORBA::String_var aPlnEntry = thePlane->GetEntry();
-  Handle(GEOM_Object) aPlane =
-    GetOperations()->GetEngine()->GetObject(thePlane->GetStudyID(), aPlnEntry);
+  Handle(GEOM_Object) aPlane = GetObjectImpl(thePlane);
   if (aPlane.IsNull()) return aGEOMObject._retn();
 
   //Perform the mirror
@@ -474,25 +423,19 @@ GEOM::GEOM_Object_ptr GEOM_ITransformOperations_i::MirrorPlane
 //=============================================================================
 GEOM::GEOM_Object_ptr GEOM_ITransformOperations_i::MirrorPlaneCopy
                                             (GEOM::GEOM_Object_ptr theObject,
-                                            GEOM::GEOM_Object_ptr thePlane)
+                                             GEOM::GEOM_Object_ptr thePlane)
 {
   GEOM::GEOM_Object_var aGEOMObject;
 
   //Set a not done flag
   GetOperations()->SetNotDone();
 
-  if (theObject == NULL || thePlane == NULL) return aGEOMObject._retn();
-
   //Get the object itself
-  CORBA::String_var anEntry = theObject->GetEntry();
-  Handle(GEOM_Object) aBasicObject =
-    GetOperations()->GetEngine()->GetObject(theObject->GetStudyID(), anEntry);
+  Handle(GEOM_Object) aBasicObject = GetObjectImpl(theObject);
   if (aBasicObject.IsNull()) return aGEOMObject._retn();
 
   //Get the vector of translation
-  CORBA::String_var aPlnEntry = thePlane->GetEntry();
-  Handle(GEOM_Object) aPlane =
-    GetOperations()->GetEngine()->GetObject(thePlane->GetStudyID(), aPlnEntry);
+  Handle(GEOM_Object) aPlane = GetObjectImpl(thePlane);
   if (aPlane.IsNull()) return aGEOMObject._retn();
 
   //Perform the mirror
@@ -510,31 +453,27 @@ GEOM::GEOM_Object_ptr GEOM_ITransformOperations_i::MirrorPlaneCopy
 //=============================================================================
 GEOM::GEOM_Object_ptr GEOM_ITransformOperations_i::MirrorAxis
                                             (GEOM::GEOM_Object_ptr theObject,
-                                            GEOM::GEOM_Object_ptr theAxis)
+                                             GEOM::GEOM_Object_ptr theAxis)
 {
   GEOM::GEOM_Object_var aGEOMObject = GEOM::GEOM_Object::_duplicate(theObject);
 
   //Set a not done flag
   GetOperations()->SetNotDone();
 
-  if (theObject == NULL || theAxis == NULL) return aGEOMObject._retn();
+  if (CORBA::is_nil(theObject)) return aGEOMObject._retn();
 
   //check if the object is a subshape
-  if(!theObject->IsMainShape()) {
+  if (!theObject->IsMainShape()) {
     GetOperations()->SetErrorCode(SUBSHAPE_ERROR);
     return aGEOMObject._retn();
   }
 
   //Get the object itself
-  CORBA::String_var anEntry = theObject->GetEntry();
-  Handle(GEOM_Object) anObject =
-    GetOperations()->GetEngine()->GetObject(theObject->GetStudyID(), anEntry);
+  Handle(GEOM_Object) anObject = GetObjectImpl(theObject);
   if (anObject.IsNull()) return aGEOMObject._retn();
 
   //Get the axis
-  CORBA::String_var anAEntry = theAxis->GetEntry();
-  Handle(GEOM_Object) aAxis =
-    GetOperations()->GetEngine()->GetObject(theAxis->GetStudyID(), anAEntry);
+  Handle(GEOM_Object) aAxis = GetObjectImpl(theAxis);
   if (aAxis.IsNull()) return aGEOMObject._retn();
 
   //Perform the mirror
@@ -550,25 +489,19 @@ GEOM::GEOM_Object_ptr GEOM_ITransformOperations_i::MirrorAxis
 //=============================================================================
 GEOM::GEOM_Object_ptr GEOM_ITransformOperations_i::MirrorAxisCopy
                                             (GEOM::GEOM_Object_ptr theObject,
-                                            GEOM::GEOM_Object_ptr theAxis)
+                                             GEOM::GEOM_Object_ptr theAxis)
 {
   GEOM::GEOM_Object_var aGEOMObject;
 
   //Set a not done flag
   GetOperations()->SetNotDone();
 
-  if (theObject == NULL || theAxis == NULL) return aGEOMObject._retn();
-
   //Get the object itself
-  CORBA::String_var anEntry = theObject->GetEntry();
-  Handle(GEOM_Object) aBasicObject =
-    GetOperations()->GetEngine()->GetObject(theObject->GetStudyID(), anEntry);
+  Handle(GEOM_Object) aBasicObject = GetObjectImpl(theObject);
   if (aBasicObject.IsNull()) return aGEOMObject._retn();
 
   //Get the vector of translation
-  CORBA::String_var anAEntry = theAxis->GetEntry();
-  Handle(GEOM_Object) aAxis =
-    GetOperations()->GetEngine()->GetObject(theAxis->GetStudyID(), anAEntry);
+  Handle(GEOM_Object) aAxis = GetObjectImpl(theAxis);
   if (aAxis.IsNull()) return aGEOMObject._retn();
 
   //Perform the mirror
@@ -586,14 +519,14 @@ GEOM::GEOM_Object_ptr GEOM_ITransformOperations_i::MirrorAxisCopy
 //=============================================================================
 GEOM::GEOM_Object_ptr GEOM_ITransformOperations_i::MirrorPoint
                                             (GEOM::GEOM_Object_ptr theObject,
-                                            GEOM::GEOM_Object_ptr thePoint)
+                                             GEOM::GEOM_Object_ptr thePoint)
 {
   GEOM::GEOM_Object_var aGEOMObject = GEOM::GEOM_Object::_duplicate(theObject);
 
   //Set a not done flag
   GetOperations()->SetNotDone();
 
-  if (theObject == NULL || thePoint == NULL) return aGEOMObject._retn();
+  if (CORBA::is_nil(theObject)) return aGEOMObject._retn();
 
   //check if the object is a subshape
   if (!theObject->IsMainShape()) {
@@ -602,15 +535,11 @@ GEOM::GEOM_Object_ptr GEOM_ITransformOperations_i::MirrorPoint
   }
 
   //Get the object itself
-  CORBA::String_var anEntry = theObject->GetEntry();
-  Handle(GEOM_Object) anObject =
-    GetOperations()->GetEngine()->GetObject(theObject->GetStudyID(), anEntry);
+  Handle(GEOM_Object) anObject = GetObjectImpl(theObject);
   if (anObject.IsNull()) return aGEOMObject._retn();
 
   //Get the point
-  CORBA::String_var aPntEntry = thePoint->GetEntry();
-  Handle(GEOM_Object) aPoint =
-    GetOperations()->GetEngine()->GetObject(thePoint->GetStudyID(), aPntEntry);
+  Handle(GEOM_Object) aPoint = GetObjectImpl(thePoint);
   if (aPoint.IsNull()) return aGEOMObject._retn();
 
   //Perform the mirror
@@ -626,25 +555,19 @@ GEOM::GEOM_Object_ptr GEOM_ITransformOperations_i::MirrorPoint
 //=============================================================================
 GEOM::GEOM_Object_ptr GEOM_ITransformOperations_i::MirrorPointCopy
                                             (GEOM::GEOM_Object_ptr theObject,
-                                            GEOM::GEOM_Object_ptr thePoint)
+                                             GEOM::GEOM_Object_ptr thePoint)
 {
   GEOM::GEOM_Object_var aGEOMObject;
 
   //Set a not done flag
   GetOperations()->SetNotDone();
 
-  if (theObject == NULL || thePoint == NULL) return aGEOMObject._retn();
-
   //Get the object itself
-  CORBA::String_var anEntry = theObject->GetEntry();
-  Handle(GEOM_Object) aBasicObject =
-    GetOperations()->GetEngine()->GetObject(theObject->GetStudyID(), anEntry);
+  Handle(GEOM_Object) aBasicObject = GetObjectImpl(theObject);
   if (aBasicObject.IsNull()) return aGEOMObject._retn();
 
   //Get the vector of translation
-  CORBA::String_var aPntEntry = thePoint->GetEntry();
-  Handle(GEOM_Object) aPoint =
-    GetOperations()->GetEngine()->GetObject(thePoint->GetStudyID(), aPntEntry);
+  Handle(GEOM_Object) aPoint = GetObjectImpl(thePoint);
   if (aPoint.IsNull()) return aGEOMObject._retn();
 
   //Perform the mirror
@@ -655,7 +578,6 @@ GEOM::GEOM_Object_ptr GEOM_ITransformOperations_i::MirrorPointCopy
   return GetObject(anObject);
 }
 
-
 //=============================================================================
 /*!
  *  OffsetShape
@@ -663,14 +585,14 @@ GEOM::GEOM_Object_ptr GEOM_ITransformOperations_i::MirrorPointCopy
 //=============================================================================
 GEOM::GEOM_Object_ptr GEOM_ITransformOperations_i::OffsetShape
                                              (GEOM::GEOM_Object_ptr theObject,
-                                             CORBA::Double theOffset)
+                                              CORBA::Double theOffset)
 {
   GEOM::GEOM_Object_var aGEOMObject = GEOM::GEOM_Object::_duplicate(theObject);
 
   //Set a not done flag
   GetOperations()->SetNotDone();
 
-  if (theObject == NULL) return aGEOMObject._retn();
+  if (CORBA::is_nil(theObject)) return aGEOMObject._retn();
 
   //check if the object is a subshape
   if (!theObject->IsMainShape()) {
@@ -679,9 +601,7 @@ GEOM::GEOM_Object_ptr GEOM_ITransformOperations_i::OffsetShape
   }
 
   //Get the basic object
-  CORBA::String_var anEntry = theObject->GetEntry();
-  Handle(GEOM_Object) aBasicObject =
-    GetOperations()->GetEngine()->GetObject(theObject->GetStudyID(), anEntry);
+  Handle(GEOM_Object) aBasicObject = GetObjectImpl(theObject);
   if (aBasicObject.IsNull()) return aGEOMObject._retn();
 
   //Create the offset shape
@@ -697,19 +617,15 @@ GEOM::GEOM_Object_ptr GEOM_ITransformOperations_i::OffsetShape
 //=============================================================================
 GEOM::GEOM_Object_ptr GEOM_ITransformOperations_i::OffsetShapeCopy
                                              (GEOM::GEOM_Object_ptr theObject,
-                                             CORBA::Double theOffset)
+                                              CORBA::Double theOffset)
 {
   GEOM::GEOM_Object_var aGEOMObject;
 
   //Set a not done flag
   GetOperations()->SetNotDone();
 
-  if (theObject == NULL) return aGEOMObject._retn();
-
   //Get the basic object
-  CORBA::String_var anEntry = theObject->GetEntry();
-  Handle(GEOM_Object) aBasicObject =
-    GetOperations()->GetEngine()->GetObject(theObject->GetStudyID(), anEntry);
+  Handle(GEOM_Object) aBasicObject = GetObjectImpl(theObject);
   if (aBasicObject.IsNull()) return aGEOMObject._retn();
 
   //Create the offset shape
@@ -720,7 +636,6 @@ GEOM::GEOM_Object_ptr GEOM_ITransformOperations_i::OffsetShapeCopy
   return GetObject(anObject);
 }
 
-
 //=============================================================================
 /*!
  *  ScaleShape
@@ -728,8 +643,8 @@ GEOM::GEOM_Object_ptr GEOM_ITransformOperations_i::OffsetShapeCopy
 //=============================================================================
 GEOM::GEOM_Object_ptr GEOM_ITransformOperations_i::ScaleShape
                                              (GEOM::GEOM_Object_ptr theObject,
-                                             GEOM::GEOM_Object_ptr thePoint,
-                                             CORBA::Double         theFactor)
+                                              GEOM::GEOM_Object_ptr thePoint,
+                                              CORBA::Double         theFactor)
 {
   GEOM::GEOM_Object_var aGEOMObject = GEOM::GEOM_Object::_duplicate(theObject);
 
@@ -745,16 +660,13 @@ GEOM::GEOM_Object_ptr GEOM_ITransformOperations_i::ScaleShape
   }
 
   //Get the object itself
-  CORBA::String_var anEntry = theObject->GetEntry();
-  Handle(GEOM_Object) anObject =
-    GetOperations()->GetEngine()->GetObject(theObject->GetStudyID(), anEntry);
+  Handle(GEOM_Object) anObject = GetObjectImpl(theObject);
   if (anObject.IsNull()) return aGEOMObject._retn();
 
   //Get the point
   Handle(GEOM_Object) aPoint;
   if (!thePoint->_is_nil()) {
-    CORBA::String_var aPntEntry = thePoint->GetEntry();
-    aPoint = GetOperations()->GetEngine()->GetObject(thePoint->GetStudyID(), aPntEntry);
+    aPoint = GetObjectImpl(thePoint);
     if (aPoint.IsNull()) return aGEOMObject._retn();
   }
 
@@ -771,27 +683,22 @@ GEOM::GEOM_Object_ptr GEOM_ITransformOperations_i::ScaleShape
 //=============================================================================
 GEOM::GEOM_Object_ptr GEOM_ITransformOperations_i::ScaleShapeCopy
                                              (GEOM::GEOM_Object_ptr theObject,
-                                             GEOM::GEOM_Object_ptr thePoint,
-                                             CORBA::Double         theFactor)
+                                              GEOM::GEOM_Object_ptr thePoint,
+                                              CORBA::Double         theFactor)
 {
   GEOM::GEOM_Object_var aGEOMObject;
 
   //Set a not done flag
   GetOperations()->SetNotDone();
 
-  if (theObject->_is_nil()) return aGEOMObject._retn();
-
   //Get the basic object
-  CORBA::String_var anEntry = theObject->GetEntry();
-  Handle(GEOM_Object) aBasicObject =
-    GetOperations()->GetEngine()->GetObject(theObject->GetStudyID(), anEntry);
+  Handle(GEOM_Object) aBasicObject = GetObjectImpl(theObject);
   if (aBasicObject.IsNull()) return aGEOMObject._retn();
 
   //Get the point
   Handle(GEOM_Object) aPoint;
   if (!thePoint->_is_nil()) {
-    CORBA::String_var aPntEntry = thePoint->GetEntry();
-    aPoint = GetOperations()->GetEngine()->GetObject(thePoint->GetStudyID(), aPntEntry);
+    aPoint = GetObjectImpl(thePoint);
     if (aPoint.IsNull()) return aGEOMObject._retn();
   }
 
@@ -811,10 +718,10 @@ GEOM::GEOM_Object_ptr GEOM_ITransformOperations_i::ScaleShapeCopy
 //=============================================================================
 GEOM::GEOM_Object_ptr GEOM_ITransformOperations_i::ScaleShapeAlongAxes
                                              (GEOM::GEOM_Object_ptr theObject,
-                                             GEOM::GEOM_Object_ptr thePoint,
-                                             CORBA::Double         theFactorX,
-                                             CORBA::Double         theFactorY,
-                                             CORBA::Double         theFactorZ)
+                                              GEOM::GEOM_Object_ptr thePoint,
+                                              CORBA::Double         theFactorX,
+                                              CORBA::Double         theFactorY,
+                                              CORBA::Double         theFactorZ)
 {
   GEOM::GEOM_Object_var aGEOMObject = GEOM::GEOM_Object::_duplicate(theObject);
 
@@ -830,16 +737,13 @@ GEOM::GEOM_Object_ptr GEOM_ITransformOperations_i::ScaleShapeAlongAxes
   }
 
   //Get the object itself
-  CORBA::String_var anEntry = theObject->GetEntry();
-  Handle(GEOM_Object) anObject =
-    GetOperations()->GetEngine()->GetObject(theObject->GetStudyID(), anEntry);
+  Handle(GEOM_Object) anObject = GetObjectImpl(theObject);
   if (anObject.IsNull()) return aGEOMObject._retn();
 
   //Get the point
   Handle(GEOM_Object) aPoint;
   if (!thePoint->_is_nil()) {
-    CORBA::String_var aPntEntry = thePoint->GetEntry();
-    aPoint = GetOperations()->GetEngine()->GetObject(thePoint->GetStudyID(), aPntEntry);
+    aPoint = GetObjectImpl(thePoint);
     if (aPoint.IsNull()) return aGEOMObject._retn();
   }
 
@@ -857,29 +761,24 @@ GEOM::GEOM_Object_ptr GEOM_ITransformOperations_i::ScaleShapeAlongAxes
 //=============================================================================
 GEOM::GEOM_Object_ptr GEOM_ITransformOperations_i::ScaleShapeAlongAxesCopy
                                              (GEOM::GEOM_Object_ptr theObject,
-                                             GEOM::GEOM_Object_ptr thePoint,
-                                             CORBA::Double         theFactorX,
-                                             CORBA::Double         theFactorY,
-                                             CORBA::Double         theFactorZ)
+                                              GEOM::GEOM_Object_ptr thePoint,
+                                              CORBA::Double         theFactorX,
+                                              CORBA::Double         theFactorY,
+                                              CORBA::Double         theFactorZ)
 {
   GEOM::GEOM_Object_var aGEOMObject;
 
   //Set a not done flag
   GetOperations()->SetNotDone();
 
-  if (theObject->_is_nil()) return aGEOMObject._retn();
-
   //Get the basic object
-  CORBA::String_var anEntry = theObject->GetEntry();
-  Handle(GEOM_Object) aBasicObject =
-    GetOperations()->GetEngine()->GetObject(theObject->GetStudyID(), anEntry);
+  Handle(GEOM_Object) aBasicObject = GetObjectImpl(theObject);
   if (aBasicObject.IsNull()) return aGEOMObject._retn();
 
   //Get the point
   Handle(GEOM_Object) aPoint;
   if (!thePoint->_is_nil()) {
-    CORBA::String_var aPntEntry = thePoint->GetEntry();
-    aPoint = GetOperations()->GetEngine()->GetObject(thePoint->GetStudyID(), aPntEntry);
+    aPoint = GetObjectImpl(thePoint);
     if (aPoint.IsNull()) return aGEOMObject._retn();
   }
 
@@ -899,15 +798,15 @@ GEOM::GEOM_Object_ptr GEOM_ITransformOperations_i::ScaleShapeAlongAxesCopy
 //=============================================================================
 GEOM::GEOM_Object_ptr GEOM_ITransformOperations_i::PositionShape
                                              (GEOM::GEOM_Object_ptr theObject,
-                                             GEOM::GEOM_Object_ptr theStartLCS,
-                                             GEOM::GEOM_Object_ptr theEndLCS)
+                                              GEOM::GEOM_Object_ptr theStartLCS,
+                                              GEOM::GEOM_Object_ptr theEndLCS)
 {
   GEOM::GEOM_Object_var aGEOMObject = GEOM::GEOM_Object::_duplicate(theObject);
 
   //Set a not done flag
   GetOperations()->SetNotDone();
 
-  if (theObject == NULL || theEndLCS == NULL)
+  if (CORBA::is_nil(theObject) || CORBA::is_nil(theEndLCS))
     return aGEOMObject._retn();
 
   //check if the object is a subshape
@@ -917,23 +816,18 @@ GEOM::GEOM_Object_ptr GEOM_ITransformOperations_i::PositionShape
   }
 
   //Get the basic object
-  CORBA::String_var anEntry = theObject->GetEntry();
-  Handle(GEOM_Object) anObject =
-    GetOperations()->GetEngine()->GetObject(theObject->GetStudyID(), anEntry);
+  Handle(GEOM_Object) anObject = GetObjectImpl(theObject);
   if (anObject.IsNull()) return aGEOMObject._retn();
 
   //Get the Start LCS (may be NULL for positioning from global LCS)
-  Handle(GEOM_Object) aStartLCS = NULL;
-  if (theStartLCS != NULL && !CORBA::is_nil(theStartLCS)) {
-    CORBA::String_var aStartLCSEntry = theStartLCS->GetEntry();
-    aStartLCS = GetOperations()->GetEngine()->GetObject(theStartLCS->GetStudyID(), aStartLCSEntry);
+  Handle(GEOM_Object) aStartLCS;
+  if (!CORBA::is_nil(theStartLCS)) {
+    aStartLCS = GetObjectImpl(theStartLCS);
     if (aStartLCS.IsNull()) return aGEOMObject._retn();
   }
 
   //Get the End LCS
-  CORBA::String_var anEndLCSEntry = theEndLCS->GetEntry();
-  Handle(GEOM_Object) aEndLCS =
-    GetOperations()->GetEngine()->GetObject(theEndLCS->GetStudyID(), anEndLCSEntry);
+  Handle(GEOM_Object) aEndLCS = GetObjectImpl(theEndLCS);
   if (aEndLCS.IsNull()) return aGEOMObject._retn();
 
   //Perform the Position
@@ -949,35 +843,27 @@ GEOM::GEOM_Object_ptr GEOM_ITransformOperations_i::PositionShape
 //=============================================================================
 GEOM::GEOM_Object_ptr GEOM_ITransformOperations_i::PositionShapeCopy
                                              (GEOM::GEOM_Object_ptr theObject,
-                                             GEOM::GEOM_Object_ptr theStartLCS,
-                                             GEOM::GEOM_Object_ptr theEndLCS)
+                                              GEOM::GEOM_Object_ptr theStartLCS,
+                                              GEOM::GEOM_Object_ptr theEndLCS)
 {
   GEOM::GEOM_Object_var aGEOMObject;
 
   //Set a not done flag
   GetOperations()->SetNotDone();
 
-  if (theObject == NULL || theEndLCS == NULL)
-    return aGEOMObject._retn();
-
   //Get the basic object
-  CORBA::String_var anEntry = theObject->GetEntry();
-  Handle(GEOM_Object) aBasicObject =
-    GetOperations()->GetEngine()->GetObject(theObject->GetStudyID(), anEntry);
+  Handle(GEOM_Object) aBasicObject = GetObjectImpl(theObject);
   if (aBasicObject.IsNull()) return aGEOMObject._retn();
 
   //Get the Start LCS (may be NULL for positioning from global LCS)
-  Handle(GEOM_Object) aStartLCS = NULL;
-  if (theStartLCS != NULL && !CORBA::is_nil(theStartLCS)) {
-    CORBA::String_var aStartLCSEntry = theStartLCS->GetEntry();
-    aStartLCS = GetOperations()->GetEngine()->GetObject(theStartLCS->GetStudyID(), aStartLCSEntry);
+  Handle(GEOM_Object) aStartLCS;
+  if (!CORBA::is_nil(theStartLCS)) {
+    aStartLCS = GetObjectImpl(theStartLCS);
     if (aStartLCS.IsNull()) return aGEOMObject._retn();
   }
 
   //Get the End LCS
-  CORBA::String_var anEndLCSEntry = theEndLCS->GetEntry();
-  Handle(GEOM_Object) aEndLCS =
-    GetOperations()->GetEngine()->GetObject(theEndLCS->GetStudyID(), anEndLCSEntry);
+  Handle(GEOM_Object) aEndLCS = GetObjectImpl(theEndLCS);
   if (aEndLCS.IsNull()) return aGEOMObject._retn();
 
   //Perform the position
@@ -996,26 +882,20 @@ GEOM::GEOM_Object_ptr GEOM_ITransformOperations_i::PositionShapeCopy
 //=============================================================================
 GEOM::GEOM_Object_ptr GEOM_ITransformOperations_i::MultiTranslate1D
                            (GEOM::GEOM_Object_ptr theObject,
-                           GEOM::GEOM_Object_ptr theVector,
-                           CORBA::Double theStep, CORBA::Long theNbTimes)
+                            GEOM::GEOM_Object_ptr theVector,
+                            CORBA::Double theStep, CORBA::Long theNbTimes)
 {
   //Set a not done flag
   GetOperations()->SetNotDone();
 
   GEOM::GEOM_Object_var aGEOMObject;
 
-  if (theObject == NULL || theVector == NULL) return aGEOMObject._retn();
-
   //Get the object itself
-  CORBA::String_var anEntry = theObject->GetEntry();
-  Handle(GEOM_Object) aBasicObject =
-    GetOperations()->GetEngine()->GetObject(theObject->GetStudyID(), anEntry);
+  Handle(GEOM_Object) aBasicObject = GetObjectImpl(theObject);
   if (aBasicObject.IsNull()) return aGEOMObject._retn();
 
   //Get the vector of translation
-  CORBA::String_var aVecEntry = theVector->GetEntry();
-  Handle(GEOM_Object) aVector =
-    GetOperations()->GetEngine()->GetObject(theVector->GetStudyID(), aVecEntry);
+  Handle(GEOM_Object) aVector = GetObjectImpl(theVector);
   if (aVector.IsNull()) return aGEOMObject._retn();
 
   //Perform the translation
@@ -1032,36 +912,28 @@ GEOM::GEOM_Object_ptr GEOM_ITransformOperations_i::MultiTranslate1D
  */
 //=============================================================================
 GEOM::GEOM_Object_ptr GEOM_ITransformOperations_i::MultiTranslate2D (GEOM::GEOM_Object_ptr theObject,
-                                                                    GEOM::GEOM_Object_ptr theVector1,
-                                                                    CORBA::Double theStep1,
-                                                                    CORBA::Long theNbTimes1,
-                                                                    GEOM::GEOM_Object_ptr theVector2,
-                                                                    CORBA::Double theStep2,
-                                                                    CORBA::Long theNbTimes2)
+                                                                     GEOM::GEOM_Object_ptr theVector1,
+                                                                     CORBA::Double theStep1,
+                                                                     CORBA::Long theNbTimes1,
+                                                                     GEOM::GEOM_Object_ptr theVector2,
+                                                                     CORBA::Double theStep2,
+                                                                     CORBA::Long theNbTimes2)
 {
   //Set a not done flag
   GetOperations()->SetNotDone();
 
   GEOM::GEOM_Object_var aGEOMObject;
 
-  if (theObject == NULL || theVector1 == NULL || theVector2 == NULL) return aGEOMObject._retn();
-
   //Get the object itself
-  CORBA::String_var anEntry = theObject->GetEntry();
-  Handle(GEOM_Object) aBasicObject =
-    GetOperations()->GetEngine()->GetObject(theObject->GetStudyID(), anEntry);
+  Handle(GEOM_Object) aBasicObject = GetObjectImpl(theObject);
   if (aBasicObject.IsNull()) return aGEOMObject._retn();
 
   //Get the vector1 of translation
-  CORBA::String_var aVec1Entry = theVector1->GetEntry();
-  Handle(GEOM_Object) aVector1 =
-    GetOperations()->GetEngine()->GetObject(theVector1->GetStudyID(), aVec1Entry);
+  Handle(GEOM_Object) aVector1 = GetObjectImpl(theVector1);
   if (aVector1.IsNull()) return aGEOMObject._retn();
 
   //Get the vector2 of translation
-  CORBA::String_var aVec2Entry = theVector2->GetEntry();
-  Handle(GEOM_Object) aVector2 =
-    GetOperations()->GetEngine()->GetObject(theVector2->GetStudyID(), aVec2Entry);
+  Handle(GEOM_Object) aVector2 = GetObjectImpl(theVector2);
   if (aVector2.IsNull()) return aGEOMObject._retn();
 
   //Perform the translation
@@ -1078,26 +950,20 @@ GEOM::GEOM_Object_ptr GEOM_ITransformOperations_i::MultiTranslate2D (GEOM::GEOM_
  */
 //=============================================================================
 GEOM::GEOM_Object_ptr GEOM_ITransformOperations_i::MultiRotate1D (GEOM::GEOM_Object_ptr theObject,
-                                                                 GEOM::GEOM_Object_ptr theVector,
-                                                                 CORBA::Long theNbTimes)
+                                                                  GEOM::GEOM_Object_ptr theVector,
+                                                                  CORBA::Long theNbTimes)
 {
   //Set a not done flag
   GetOperations()->SetNotDone();
 
   GEOM::GEOM_Object_var aGEOMObject;
 
-  if (theObject == NULL || theVector == NULL) return aGEOMObject._retn();
-
   //Get the object itself
-  CORBA::String_var anEntry = theObject->GetEntry();
-  Handle(GEOM_Object) aBasicObject =
-    GetOperations()->GetEngine()->GetObject(theObject->GetStudyID(), anEntry);
+  Handle(GEOM_Object) aBasicObject = GetObjectImpl(theObject);
   if (aBasicObject.IsNull()) return aGEOMObject._retn();
 
   //Get the a directon of rotation
-  CORBA::String_var aVecEntry = theVector->GetEntry();
-  Handle(GEOM_Object) aVector =
-    GetOperations()->GetEngine()->GetObject(theVector->GetStudyID(), aVecEntry);
+  Handle(GEOM_Object) aVector = GetObjectImpl(theVector);
   if (aVector.IsNull()) return aGEOMObject._retn();
 
   //Perform the rotation
@@ -1113,29 +979,23 @@ GEOM::GEOM_Object_ptr GEOM_ITransformOperations_i::MultiRotate1D (GEOM::GEOM_Obj
  */
 //=============================================================================
 GEOM::GEOM_Object_ptr GEOM_ITransformOperations_i::MultiRotate2D (GEOM::GEOM_Object_ptr theObject,
-                                                                 GEOM::GEOM_Object_ptr theVector,
-                                                                 CORBA::Double theAngle,
-                                                                 CORBA::Long theNbTimes1,
-                                                                 CORBA::Double theStep,
-                                                                 CORBA::Long theNbTimes2)
+                                                                  GEOM::GEOM_Object_ptr theVector,
+                                                                  CORBA::Double theAngle,
+                                                                  CORBA::Long theNbTimes1,
+                                                                  CORBA::Double theStep,
+                                                                  CORBA::Long theNbTimes2)
 {
   //Set a not done flag
   GetOperations()->SetNotDone();
 
   GEOM::GEOM_Object_var aGEOMObject;
 
-  if (theObject == NULL || theVector == NULL) return aGEOMObject._retn();
-
   //Get the object itself
-  CORBA::String_var anEntry = theObject->GetEntry();
-  Handle(GEOM_Object) aBasicObject =
-    GetOperations()->GetEngine()->GetObject(theObject->GetStudyID(), anEntry);
+  Handle(GEOM_Object) aBasicObject = GetObjectImpl(theObject);
   if (aBasicObject.IsNull()) return aGEOMObject._retn();
 
   //Get the a directon of rotation
-  CORBA::String_var aVecEntry = theVector->GetEntry();
-  Handle(GEOM_Object) aVector =
-    GetOperations()->GetEngine()->GetObject(theVector->GetStudyID(), aVecEntry);
+  Handle(GEOM_Object) aVector = GetObjectImpl(theVector);
   if (aVector.IsNull()) return aGEOMObject._retn();
 
   //Perform the rotation
@@ -1153,15 +1013,15 @@ GEOM::GEOM_Object_ptr GEOM_ITransformOperations_i::MultiRotate2D (GEOM::GEOM_Obj
 //=============================================================================
 GEOM::GEOM_Object_ptr GEOM_ITransformOperations_i::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 theCentPoint,
+                                              GEOM::GEOM_Object_ptr thePoint1,
+                                              GEOM::GEOM_Object_ptr thePoint2)
 {
   //Set a not done flag
   GetOperations()->SetNotDone();
   GEOM::GEOM_Object_var aGEOMObject;
 
-  if (theCentPoint == NULL || thePoint1 == NULL || thePoint2 == NULL || theObject == NULL)
+  if (CORBA::is_nil(theObject))
     return aGEOMObject._retn();
 
   //check if the object is a subshape
@@ -1173,27 +1033,19 @@ GEOM::GEOM_Object_ptr GEOM_ITransformOperations_i::RotateThreePoints
   aGEOMObject = GEOM::GEOM_Object::_duplicate(theObject);
 
   //Get the object itself
-  CORBA::String_var anEntry = theObject->GetEntry();
-  Handle(GEOM_Object) anObject =
-    GetOperations()->GetEngine()->GetObject(theObject->GetStudyID(), anEntry);
+  Handle(GEOM_Object) anObject = GetObjectImpl(theObject);
   if (anObject.IsNull()) return aGEOMObject._retn();
 
   //Get the central point of rotation
-  CORBA::String_var aCPEntry = theCentPoint->GetEntry();
-  Handle(GEOM_Object) aCentPoint =
-    GetOperations()->GetEngine()->GetObject(theCentPoint->GetStudyID(), aCPEntry);
+  Handle(GEOM_Object) aCentPoint = GetObjectImpl(theCentPoint);
   if (aCentPoint.IsNull()) return aGEOMObject._retn();
 
   //Get the first point
-  CORBA::String_var aP1Entry = thePoint1->GetEntry();
-  Handle(GEOM_Object) aPoint1 =
-    GetOperations()->GetEngine()->GetObject(thePoint1->GetStudyID(), aP1Entry);
+  Handle(GEOM_Object) aPoint1 = GetObjectImpl(thePoint1);
   if (aPoint1.IsNull()) return aGEOMObject._retn();
 
   //Get the second point
-  CORBA::String_var aP2Entry = thePoint2->GetEntry();
-  Handle(GEOM_Object) aPoint2 =
-    GetOperations()->GetEngine()->GetObject(thePoint2->GetStudyID(), aP2Entry);
+  Handle(GEOM_Object) aPoint2 = GetObjectImpl(thePoint2);
   if (aPoint2.IsNull()) return aGEOMObject._retn();
 
   //Perform the translation
@@ -1209,40 +1061,29 @@ GEOM::GEOM_Object_ptr GEOM_ITransformOperations_i::RotateThreePoints
 //=============================================================================
 GEOM::GEOM_Object_ptr GEOM_ITransformOperations_i::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 theCentPoint,
+                                              GEOM::GEOM_Object_ptr thePoint1,
+                                              GEOM::GEOM_Object_ptr thePoint2)
 {
   GEOM::GEOM_Object_var aGEOMObject;
 
   //Set a not done flag
   GetOperations()->SetNotDone();
 
-  if (theCentPoint == NULL || thePoint1 == NULL || thePoint2 == NULL || theObject == NULL)
-    return aGEOMObject._retn();
-
   //Get the object itself
-  CORBA::String_var anEntry = theObject->GetEntry();
-  Handle(GEOM_Object) aBasicObject =
-    GetOperations()->GetEngine()->GetObject(theObject->GetStudyID(), anEntry);
+  Handle(GEOM_Object) aBasicObject = GetObjectImpl(theObject);
   if (aBasicObject.IsNull()) return aGEOMObject._retn();
 
   //Get the central point of rotation
-  CORBA::String_var aCPEntry = theCentPoint->GetEntry();
-  Handle(GEOM_Object) aCentPoint =
-    GetOperations()->GetEngine()->GetObject(theCentPoint->GetStudyID(), aCPEntry);
+  Handle(GEOM_Object) aCentPoint = GetObjectImpl(theCentPoint);
   if (aCentPoint.IsNull()) return aGEOMObject._retn();
 
   //Get the first point
-  CORBA::String_var aP1Entry = thePoint1->GetEntry();
-  Handle(GEOM_Object) aPoint1 =
-    GetOperations()->GetEngine()->GetObject(thePoint1->GetStudyID(), aP1Entry);
+  Handle(GEOM_Object) aPoint1 = GetObjectImpl(thePoint1);
   if (aPoint1.IsNull()) return aGEOMObject._retn();
 
   //Get the second point
-  CORBA::String_var aP2Entry = thePoint2->GetEntry();
-  Handle(GEOM_Object) aPoint2 =
-    GetOperations()->GetEngine()->GetObject(thePoint2->GetStudyID(), aP2Entry);
+  Handle(GEOM_Object) aPoint2 = GetObjectImpl(thePoint2);
   if (aPoint2.IsNull()) return aGEOMObject._retn();
 
   //Perform the rotation
@@ -1266,20 +1107,12 @@ GEOM::GEOM_Object_ptr GEOM_ITransformOperations_i::RecomputeObject
   GetOperations()->SetNotDone();
   GEOM::GEOM_Object_var aGEOMObject;
 
-  if (theObject == NULL) return aGEOMObject._retn();
-
-  //check if the object is a subshape
-  //if (!theObject->IsMainShape()) {
-  //  GetOperations()->SetErrorCode(SUBSHAPE_ERROR);
-  //  return aGEOMObject._retn();
-  //}
+  if (CORBA::is_nil(theObject)) return aGEOMObject._retn();
 
   aGEOMObject = GEOM::GEOM_Object::_duplicate(theObject);
 
   //Get the object itself
-  CORBA::String_var anEntry = theObject->GetEntry();
-  Handle(GEOM_Object) anObject =
-    GetOperations()->GetEngine()->GetObject(theObject->GetStudyID(), anEntry);
+  Handle(GEOM_Object) anObject = GetObjectImpl(theObject);
   if (anObject.IsNull()) return aGEOMObject._retn();
 
   //Perform the recomputation