+ Handle(::GEOM_Object) anObject =
+ GetOperations()->RotateThreePointsCopy(aBasicObject, aCentPoint, aPoint1, aPoint2);
+ if (!GetOperations()->IsDone() || anObject.IsNull())
+ return aGEOMObject._retn();
+
+ return GetObject(anObject);
+}
+
+//=============================================================================
+/*!
+ * TransformLikeOtherCopy
+ */
+//=============================================================================
+GEOM::GEOM_Object_ptr GEOM_ITransformOperations_i::TransformLikeOtherCopy
+ (GEOM::GEOM_Object_ptr theObject,
+ GEOM::GEOM_Object_ptr theSample)
+{
+ GEOM::GEOM_Object_var aGEOMObject;
+
+ //Set a not done flag
+ GetOperations()->SetNotDone();
+
+ //Get the object itself
+ Handle(::GEOM_Object) anObject = GetObjectImpl(theObject);
+ if (anObject.IsNull()) return aGEOMObject._retn();
+
+ //Get the sample object
+ Handle(::GEOM_Object) aSample = GetObjectImpl(theSample);
+ if (aSample.IsNull()) return aGEOMObject._retn();
+
+ //Perform the transformation
+ Handle(::GEOM_Object) aResObject =
+ GetOperations()->TransformLikeOtherCopy(anObject, aSample);
+ if (!GetOperations()->IsDone() || aResObject.IsNull())
+ return aGEOMObject._retn();
+
+ return GetObject(aResObject);
+}
+
+//=============================================================================
+/*!
+ * RecomputeObject
+ */
+//=============================================================================
+GEOM::GEOM_Object_ptr GEOM_ITransformOperations_i::RecomputeObject
+ (GEOM::GEOM_Object_ptr theObject)
+{
+ //Set a not done flag
+ GetOperations()->SetNotDone();
+ GEOM::GEOM_Object_var aGEOMObject;
+
+ if (CORBA::is_nil(theObject)) return aGEOMObject._retn();
+
+ aGEOMObject = GEOM::GEOM_Object::_duplicate(theObject);
+
+ //Get the object itself
+ Handle(::GEOM_Object) anObject = GetObjectImpl(theObject);
+ if (anObject.IsNull()) return aGEOMObject._retn();
+
+ //Perform the recomputation
+ Handle(::GEOM_Function) aLastFunction = anObject->GetLastFunction();
+ if (aLastFunction.IsNull()) return aGEOMObject._retn();
+ GetOperations()->GetSolver()->ComputeFunction(aLastFunction);
+
+ return aGEOMObject._retn();
+}
+
+//=============================================================================
+/*!
+ * MakeProjectionOnCylinder
+ */
+//=============================================================================
+GEOM::GEOM_Object_ptr GEOM_ITransformOperations_i::MakeProjectionOnCylinder
+ (GEOM::GEOM_Object_ptr theObject,
+ CORBA::Double theRadius,
+ CORBA::Double theStartAngle,
+ CORBA::Double theAngleLength,
+ CORBA::Double theAngleRotation)
+{
+ GEOM::GEOM_Object_var aGEOMObject;
+
+ //Set a not done flag
+ GetOperations()->SetNotDone();
+
+ //Get the object
+ Handle(::GEOM_Object) anObject = GetObjectImpl(theObject);
+
+ if (anObject.IsNull()) {
+ return aGEOMObject._retn();
+ }
+
+ //Perform the transformation
+ Handle(::GEOM_Object) aResObject = GetOperations()->MakeProjectionOnCylinder
+ (anObject, theRadius, theStartAngle, theAngleLength, theAngleRotation);
+
+ if (!GetOperations()->IsDone() || aResObject.IsNull()) {
+ return aGEOMObject._retn();
+ }