-// Copyright (C) 2005 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+// Copyright (C) 2007-2016 CEA/DEN, EDF R&D, OPEN CASCADE
+//
+// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
-//
+//
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public
-// License as published by the Free Software Foundation; either
-// version 2.1 of the License.
-//
-// This library is distributed in the hope that it will be useful
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
// Lesser General Public License for more details.
//
-// You should have received a copy of the GNU Lesser General Public
-// License along with this library; if not, write to the Free Software
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+
#include <Standard_Stream.hxx>
#include "GEOM_ITransformOperations_i.hh"
//=============================================================================
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");
/*!
* TranslateTwoPoints
*/
-//=============================================================================
+//=============================================================================
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();
- //check if the object is a subshape
- if(!theObject->IsMainShape()) {
+ if (CORBA::is_nil(theObject)) return aGEOMObject._retn();
+
+ //check if the object is a sub-shape
+ if (!theObject->IsMainShape()) {
GetOperations()->SetErrorCode(SUBSHAPE_ERROR);
return aGEOMObject._retn();
}
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();
//Get the first point of translation
- Handle(GEOM_Object) aPoint1 =
- GetOperations()->GetEngine()->GetObject(thePoint1->GetStudyID(), thePoint1->GetEntry());
+ Handle(::GEOM_Object) aPoint1 = GetObjectImpl(thePoint1);
if (aPoint1.IsNull()) return aGEOMObject._retn();
//Get the second point of translation
- Handle(GEOM_Object) aPoint2 =
- GetOperations()->GetEngine()->GetObject(thePoint2->GetStudyID(), thePoint2->GetEntry());
+ Handle(::GEOM_Object) aPoint2 = GetObjectImpl(thePoint2);
if (aPoint2.IsNull()) return aGEOMObject._retn();
//Perform the translation
GetOperations()->TranslateTwoPoints(anObject, aPoint1, aPoint2);
+ // Update GUI.
+ UpdateGUIForObject(theObject);
+
return aGEOMObject._retn();
}
/*!
* TranslateTwoPointsCopy
*/
-//=============================================================================
+//=============================================================================
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
- Handle(GEOM_Object) aBasicObject =
- GetOperations()->GetEngine()->GetObject(theObject->GetStudyID(), theObject->GetEntry());
+ Handle(::GEOM_Object) aBasicObject = GetObjectImpl(theObject);
if (aBasicObject.IsNull()) return aGEOMObject._retn();
//Get the first point of translation
- Handle(GEOM_Object) aPoint1 =
- GetOperations()->GetEngine()->GetObject(thePoint1->GetStudyID(), thePoint1->GetEntry());
+ Handle(::GEOM_Object) aPoint1 = GetObjectImpl(thePoint1);
if (aPoint1.IsNull()) return aGEOMObject._retn();
//Get the second point of translation
- Handle(GEOM_Object) aPoint2 =
- GetOperations()->GetEngine()->GetObject(thePoint2->GetStudyID(), thePoint2->GetEntry());
+ Handle(::GEOM_Object) aPoint2 = GetObjectImpl(thePoint2);
if (aPoint2.IsNull()) return aGEOMObject._retn();
//Create the translated shape
- Handle(GEOM_Object) anObject =
+ Handle(::GEOM_Object) anObject =
GetOperations()->TranslateTwoPointsCopy(aBasicObject, aPoint1, aPoint2);
if (!GetOperations()->IsDone() || anObject.IsNull())
return aGEOMObject._retn();
/*!
* TranslateDXDYDZ
*/
-//=============================================================================
-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 GEOM_ITransformOperations_i::TranslateDXDYDZ
+ (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 ;
+ GetOperations()->SetNotDone();
+ 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()) {
+ //check if the object is a sub-shape
+ if (!theObject->IsMainShape()) {
GetOperations()->SetErrorCode(SUBSHAPE_ERROR);
return aGEOMObject._retn();
}
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();
//Perform the translation
GetOperations()->TranslateDXDYDZ(anObject, theDX, theDY, theDZ);
+ // Update GUI.
+ UpdateGUIForObject(theObject);
+
return aGEOMObject._retn();
}
-
//=============================================================================
/*!
* TranslateDXDYDZCopy
*/
-//=============================================================================
+//=============================================================================
GEOM::GEOM_Object_ptr GEOM_ITransformOperations_i::TranslateDXDYDZCopy
- (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)
{
GEOM::GEOM_Object_var aGEOMObject;
//Set a not done flag
GetOperations()->SetNotDone();
- if (theObject == NULL) return aGEOMObject._retn();
-
//Get the object itself
- Handle(GEOM_Object) aBasicObject =
- GetOperations()->GetEngine()->GetObject(theObject->GetStudyID(), theObject->GetEntry());
+ Handle(::GEOM_Object) aBasicObject = GetObjectImpl(theObject);
if (aBasicObject.IsNull()) return aGEOMObject._retn();
-
-
//Create the translated shape
- Handle(GEOM_Object) anObject =
+ Handle(::GEOM_Object) anObject =
GetOperations()->TranslateDXDYDZCopy(aBasicObject, theDX, theDY, theDZ);
if (!GetOperations()->IsDone() || anObject.IsNull())
return aGEOMObject._retn();
return GetObject(anObject);
}
-
//=============================================================================
/*!
* TranslateVector
*/
-//=============================================================================
+//=============================================================================
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();
+ 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()) {
+ //check if the object is a sub-shape
+ if (!theObject->IsMainShape()) {
GetOperations()->SetErrorCode(SUBSHAPE_ERROR);
return aGEOMObject._retn();
}
- aGEOMObject = GEOM::GEOM_Object::_duplicate(theObject);
+ 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();
//Get the vector of translation
- Handle(GEOM_Object) aVector =
- GetOperations()->GetEngine()->GetObject(theVector->GetStudyID(), theVector->GetEntry());
+ Handle(::GEOM_Object) aVector = GetObjectImpl(theVector);
if (aVector.IsNull()) return aGEOMObject._retn();
-
+
//Perform the translation
- GetOperations()->TranslateVector(anObject, aVector);
+ GetOperations()->TranslateVector(anObject, aVector);
+
+ // Update GUI.
+ UpdateGUIForObject(theObject);
- return aGEOMObject._retn();
+ return aGEOMObject._retn();
}
-
+
//=============================================================================
/*!
* TranslateVectorCopy
*/
-//=============================================================================
+//=============================================================================
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();
+ GetOperations()->SetNotDone();
//Get the object itself
- Handle(GEOM_Object) aBasicObject =
- GetOperations()->GetEngine()->GetObject(theObject->GetStudyID(), theObject->GetEntry());
+ Handle(::GEOM_Object) aBasicObject = GetObjectImpl(theObject);
if (aBasicObject.IsNull()) return aGEOMObject._retn();
//Get the vector of translation
- Handle(GEOM_Object) aVector =
- GetOperations()->GetEngine()->GetObject(theVector->GetStudyID(), theVector->GetEntry());
+ Handle(::GEOM_Object) aVector = GetObjectImpl(theVector);
if (aVector.IsNull()) return aGEOMObject._retn();
-
+
//Perform the translation
- Handle(GEOM_Object) anObject = GetOperations()->TranslateVectorCopy(aBasicObject, aVector);
+ Handle(::GEOM_Object) anObject = GetOperations()->TranslateVectorCopy(aBasicObject, aVector);
if (!GetOperations()->IsDone() || anObject.IsNull())
return aGEOMObject._retn();
- return GetObject(anObject);
+ return GetObject(anObject);
}
+//=============================================================================
+/*!
+ * TranslateVectorDistance
+ */
+//=============================================================================
+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_var aGEOMObject;
+ GetOperations()->SetNotDone(); //Set a not done flag
+
+ if (CORBA::is_nil(theObject)) return aGEOMObject._retn();
+
+ //check if the object is a sub-shape
+ if (!theCopy && !theObject->IsMainShape()) {
+ GetOperations()->SetErrorCode(SUBSHAPE_ERROR);
+ return aGEOMObject._retn();
+ }
+
+ if (!theCopy)
+ aGEOMObject = GEOM::GEOM_Object::_duplicate(theObject);
+
+ //Get the object itself
+ Handle(::GEOM_Object) aBasicObject = GetObjectImpl(theObject);
+ if (aBasicObject.IsNull()) return aGEOMObject._retn();
+
+ //Get the vector of translation
+ Handle(::GEOM_Object) aVector = GetObjectImpl(theVector);
+ if (aVector.IsNull()) return aGEOMObject._retn();
+
+ //Perform the translation
+ if (theCopy) {
+ Handle(::GEOM_Object) anObject = GetOperations()->
+ TranslateVectorDistance(aBasicObject, aVector, theDistance, theCopy);
+ if (!GetOperations()->IsDone() || anObject.IsNull())
+ return aGEOMObject._retn();
+
+ return GetObject(anObject);
+ }
+
+ GetOperations()->TranslateVectorDistance(aBasicObject, aVector, theDistance, theCopy);
+
+ // Update GUI.
+ UpdateGUIForObject(theObject);
+
+ return aGEOMObject._retn();
+}
//=============================================================================
/*!
* Rotate
*/
-//=============================================================================
+//=============================================================================
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();
+ 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()) {
+ //check if the object is a sub-shape
+ if (!theObject->IsMainShape()) {
GetOperations()->SetErrorCode(SUBSHAPE_ERROR);
return aGEOMObject._retn();
}
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();
//Get the axis of revolution
- Handle(GEOM_Object) anAxis =
- GetOperations()->GetEngine()->GetObject(theAxis->GetStudyID(), theAxis->GetEntry());
+ Handle(::GEOM_Object) anAxis = GetObjectImpl(theAxis);
if (anAxis.IsNull()) return aGEOMObject._retn();
-
+
//Perform the rotation
- GetOperations()->Rotate(anObject, anAxis, theAngle);
+ GetOperations()->Rotate(anObject, anAxis, theAngle);
+
+ // Update GUI.
+ UpdateGUIForObject(theObject);
- return aGEOMObject._retn();
+ return aGEOMObject._retn();
}
//=============================================================================
/*!
* RotateCopy
*/
-//=============================================================================
+//=============================================================================
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();
+ GetOperations()->SetNotDone();
//Get the object itself
- Handle(GEOM_Object) aBasicObject =
- GetOperations()->GetEngine()->GetObject(theObject->GetStudyID(), theObject->GetEntry());
+ Handle(::GEOM_Object) aBasicObject = GetObjectImpl(theObject);
if (aBasicObject.IsNull()) return aGEOMObject._retn();
//Get the axis of rotation
- Handle(GEOM_Object) anAxis =
- GetOperations()->GetEngine()->GetObject(theAxis->GetStudyID(), theAxis->GetEntry());
+ Handle(::GEOM_Object) anAxis = GetObjectImpl(theAxis);
if (anAxis.IsNull()) return aGEOMObject._retn();
-
+
//Perform the rotation
- Handle(GEOM_Object) anObject = GetOperations()->RotateCopy(aBasicObject, anAxis, theAngle);
+ Handle(::GEOM_Object) anObject = GetOperations()->RotateCopy(aBasicObject, anAxis, theAngle);
if (!GetOperations()->IsDone() || anObject.IsNull())
return aGEOMObject._retn();
- return GetObject(anObject);
+ return GetObject(anObject);
}
-
//=============================================================================
/*!
* MirrorPlane
*/
-//=============================================================================
+//=============================================================================
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();
+ 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()) {
+ //check if the object is a sub-shape
+ if (!theObject->IsMainShape()) {
GetOperations()->SetErrorCode(SUBSHAPE_ERROR);
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();
//Get the plane
- Handle(GEOM_Object) aPlane =
- GetOperations()->GetEngine()->GetObject(thePlane->GetStudyID(), thePlane->GetEntry());
+ Handle(::GEOM_Object) aPlane = GetObjectImpl(thePlane);
if (aPlane.IsNull()) return aGEOMObject._retn();
//Perform the mirror
- GetOperations()->MirrorPlane(anObject, aPlane);
+ GetOperations()->MirrorPlane(anObject, aPlane);
- return aGEOMObject._retn();
+ // Update GUI.
+ UpdateGUIForObject(theObject);
+
+ return aGEOMObject._retn();
}
-
+
//=============================================================================
/*!
* MirrorPlaneCopy
*/
-//=============================================================================
+//=============================================================================
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();
+ GetOperations()->SetNotDone();
//Get the object itself
- Handle(GEOM_Object) aBasicObject =
- GetOperations()->GetEngine()->GetObject(theObject->GetStudyID(), theObject->GetEntry());
+ Handle(::GEOM_Object) aBasicObject = GetObjectImpl(theObject);
if (aBasicObject.IsNull()) return aGEOMObject._retn();
//Get the vector of translation
- Handle(GEOM_Object) aPlane =
- GetOperations()->GetEngine()->GetObject(thePlane->GetStudyID(), thePlane->GetEntry());
+ Handle(::GEOM_Object) aPlane = GetObjectImpl(thePlane);
if (aPlane.IsNull()) return aGEOMObject._retn();
-
+
//Perform the mirror
- Handle(GEOM_Object) anObject = GetOperations()->MirrorPlaneCopy(aBasicObject, aPlane);
+ Handle(::GEOM_Object) anObject = GetOperations()->MirrorPlaneCopy(aBasicObject, aPlane);
if (!GetOperations()->IsDone() || anObject.IsNull())
return aGEOMObject._retn();
- return GetObject(anObject);
+ return GetObject(anObject);
}
//=============================================================================
/*!
* MirrorAxis
*/
-//=============================================================================
+//=============================================================================
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();
+ 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()) {
+ //check if the object is a sub-shape
+ if (!theObject->IsMainShape()) {
GetOperations()->SetErrorCode(SUBSHAPE_ERROR);
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();
//Get the axis
- Handle(GEOM_Object) aAxis =
- GetOperations()->GetEngine()->GetObject(theAxis->GetStudyID(), theAxis->GetEntry());
+ Handle(::GEOM_Object) aAxis = GetObjectImpl(theAxis);
if (aAxis.IsNull()) return aGEOMObject._retn();
//Perform the mirror
- GetOperations()->MirrorAxis(anObject, aAxis);
+ GetOperations()->MirrorAxis(anObject, aAxis);
+
+ // Update GUI.
+ UpdateGUIForObject(theObject);
- return aGEOMObject._retn();
+ return aGEOMObject._retn();
}
-
+
//=============================================================================
/*!
* MirrorAxisCopy
*/
-//=============================================================================
+//=============================================================================
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();
+ GetOperations()->SetNotDone();
//Get the object itself
- Handle(GEOM_Object) aBasicObject =
- GetOperations()->GetEngine()->GetObject(theObject->GetStudyID(), theObject->GetEntry());
+ Handle(::GEOM_Object) aBasicObject = GetObjectImpl(theObject);
if (aBasicObject.IsNull()) return aGEOMObject._retn();
//Get the vector of translation
- Handle(GEOM_Object) aAxis =
- GetOperations()->GetEngine()->GetObject(theAxis->GetStudyID(), theAxis->GetEntry());
+ Handle(::GEOM_Object) aAxis = GetObjectImpl(theAxis);
if (aAxis.IsNull()) return aGEOMObject._retn();
-
+
//Perform the mirror
- Handle(GEOM_Object) anObject = GetOperations()->MirrorAxisCopy(aBasicObject, aAxis);
+ Handle(::GEOM_Object) anObject = GetOperations()->MirrorAxisCopy(aBasicObject, aAxis);
if (!GetOperations()->IsDone() || anObject.IsNull())
return aGEOMObject._retn();
- return GetObject(anObject);
+ return GetObject(anObject);
}
//=============================================================================
/*!
* MirrorPoint
*/
-//=============================================================================
+//=============================================================================
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();
+ 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()) {
+ //check if the object is a sub-shape
+ if (!theObject->IsMainShape()) {
GetOperations()->SetErrorCode(SUBSHAPE_ERROR);
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();
//Get the point
- Handle(GEOM_Object) aPoint =
- GetOperations()->GetEngine()->GetObject(thePoint->GetStudyID(), thePoint->GetEntry());
+ Handle(::GEOM_Object) aPoint = GetObjectImpl(thePoint);
if (aPoint.IsNull()) return aGEOMObject._retn();
//Perform the mirror
- GetOperations()->MirrorPoint(anObject, aPoint);
+ GetOperations()->MirrorPoint(anObject, aPoint);
+
+ // Update GUI.
+ UpdateGUIForObject(theObject);
- return aGEOMObject._retn();
+ return aGEOMObject._retn();
}
-
+
//=============================================================================
/*!
* MirrorPointCopy
*/
-//=============================================================================
+//=============================================================================
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();
+ GetOperations()->SetNotDone();
//Get the object itself
- Handle(GEOM_Object) aBasicObject =
- GetOperations()->GetEngine()->GetObject(theObject->GetStudyID(), theObject->GetEntry());
+ Handle(::GEOM_Object) aBasicObject = GetObjectImpl(theObject);
if (aBasicObject.IsNull()) return aGEOMObject._retn();
//Get the vector of translation
- Handle(GEOM_Object) aPoint =
- GetOperations()->GetEngine()->GetObject(thePoint->GetStudyID(), thePoint->GetEntry());
+ Handle(::GEOM_Object) aPoint = GetObjectImpl(thePoint);
if (aPoint.IsNull()) return aGEOMObject._retn();
-
+
//Perform the mirror
- Handle(GEOM_Object) anObject = GetOperations()->MirrorPointCopy(aBasicObject, aPoint);
+ Handle(::GEOM_Object) anObject = GetOperations()->MirrorPointCopy(aBasicObject, aPoint);
if (!GetOperations()->IsDone() || anObject.IsNull())
return aGEOMObject._retn();
- return GetObject(anObject);
+ return GetObject(anObject);
}
-
//=============================================================================
/*!
* OffsetShape
*/
-//=============================================================================
-GEOM::GEOM_Object_ptr GEOM_ITransformOperations_i::OffsetShape
- (GEOM::GEOM_Object_ptr theObject,
- CORBA::Double theOffset)
+//=============================================================================
+GEOM::GEOM_Object_ptr
+GEOM_ITransformOperations_i::OffsetShape (GEOM::GEOM_Object_ptr theObject,
+ CORBA::Double theOffset,
+ CORBA::Boolean theJoinByPipes)
{
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()) {
+ //check if the object is a sub-shape
+ if (!theObject->IsMainShape()) {
GetOperations()->SetErrorCode(SUBSHAPE_ERROR);
return aGEOMObject._retn();
}
-
//Get the basic object
- Handle(GEOM_Object) aBasicObject =
- GetOperations()->GetEngine()->GetObject(theObject->GetStudyID(), theObject->GetEntry());
+ Handle(::GEOM_Object) aBasicObject = GetObjectImpl(theObject);
if (aBasicObject.IsNull()) return aGEOMObject._retn();
//Create the offset shape
- GetOperations()->OffsetShape(aBasicObject, theOffset);
+ GetOperations()->OffsetShape( aBasicObject, theOffset, theJoinByPipes );
+
+ // Update GUI.
+ UpdateGUIForObject(theObject);
return aGEOMObject._retn();
}
/*!
* OffsetShapeCopy
*/
-//=============================================================================
-GEOM::GEOM_Object_ptr GEOM_ITransformOperations_i::OffsetShapeCopy
- (GEOM::GEOM_Object_ptr theObject,
- CORBA::Double theOffset)
+//=============================================================================
+GEOM::GEOM_Object_ptr
+GEOM_ITransformOperations_i::OffsetShapeCopy (GEOM::GEOM_Object_ptr theObject,
+ CORBA::Double theOffset,
+ CORBA::Boolean theJoinByPipes)
{
GEOM::GEOM_Object_var aGEOMObject;
//Set a not done flag
GetOperations()->SetNotDone();
- if (theObject == NULL) return aGEOMObject._retn();
-
//Get the basic object
- Handle(GEOM_Object) aBasicObject =
- GetOperations()->GetEngine()->GetObject(theObject->GetStudyID(), theObject->GetEntry());
+ Handle(::GEOM_Object) aBasicObject = GetObjectImpl(theObject);
if (aBasicObject.IsNull()) return aGEOMObject._retn();
//Create the offset shape
- Handle(GEOM_Object) anObject = GetOperations()->OffsetShapeCopy(aBasicObject, theOffset);
+ Handle(::GEOM_Object) anObject =
+ GetOperations()->OffsetShapeCopy(aBasicObject, theOffset, theJoinByPipes);
if (!GetOperations()->IsDone() || anObject.IsNull())
return aGEOMObject._retn();
return GetObject(anObject);
}
+//=============================================================================
+/*!
+ * ProjectShapeCopy
+ */
+//=============================================================================
+GEOM::GEOM_Object_ptr GEOM_ITransformOperations_i::ProjectShapeCopy
+ (GEOM::GEOM_Object_ptr theSource,
+ GEOM::GEOM_Object_ptr theTarget)
+{
+ GEOM::GEOM_Object_var aGEOMObject;
+
+ //Set a not done flag
+ GetOperations()->SetNotDone();
+
+ //Get the input objects
+ Handle(::GEOM_Object) aSource = GetObjectImpl(theSource);
+ Handle(::GEOM_Object) aTarget = GetObjectImpl(theTarget);
+ if (aSource.IsNull() || aTarget.IsNull()) return aGEOMObject._retn();
+
+ //Create the projection
+ Handle(::GEOM_Object) anObject = GetOperations()->ProjectShapeCopy(aSource, aTarget);
+ if (!GetOperations()->IsDone() || anObject.IsNull())
+ return aGEOMObject._retn();
+
+ return GetObject(anObject);
+}
+
+//=============================================================================
+/*!
+ * ProjectPointOnWire
+ */
+//=============================================================================
+CORBA::Double GEOM_ITransformOperations_i::ProjectPointOnWire
+ (GEOM::GEOM_Object_ptr thePoint,
+ GEOM::GEOM_Object_ptr theWire,
+ GEOM::GEOM_Object_out thePointOnEdge,
+ CORBA::Long& theEdgeInWireIndex)
+{
+ //Set a not done flag
+ GetOperations()->SetNotDone();
+
+ //Get the reference shape
+ Handle(::GEOM_Object) aPoint = GetObjectImpl(thePoint);
+ Handle(::GEOM_Object) aWire = GetObjectImpl(theWire);
+
+ if (aPoint.IsNull() || aWire.IsNull()) {
+ return -1.0;
+ }
+
+ Handle(::GEOM_Object) aPointOnEdge;
+ Standard_Integer anEdgeIndex;
+ CORBA::Double aResult = GetOperations()->ProjectPointOnWire
+ (aPoint, aWire, aPointOnEdge, anEdgeIndex);
+
+ if (!aPointOnEdge.IsNull()) {
+ thePointOnEdge = GetObject(aPointOnEdge);
+ theEdgeInWireIndex = anEdgeIndex;
+ }
+
+ return aResult;
+}
//=============================================================================
/*!
* ScaleShape
*/
-//=============================================================================
+//=============================================================================
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);
//Set a not done flag
GetOperations()->SetNotDone();
- if (thePoint == NULL || theObject == NULL) return aGEOMObject._retn();
+ if (theObject->_is_nil()) return aGEOMObject._retn();
- //check if the object is a subshape
- if(!theObject->IsMainShape()) {
+ //check if the object is a sub-shape
+ if (!theObject->IsMainShape()) {
GetOperations()->SetErrorCode(SUBSHAPE_ERROR);
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();
//Get the point
- Handle(GEOM_Object) aPoint =
- GetOperations()->GetEngine()->GetObject(thePoint->GetStudyID(), thePoint->GetEntry());
- if (aPoint.IsNull()) return aGEOMObject._retn();
+ Handle(::GEOM_Object) aPoint;
+ if (!thePoint->_is_nil()) {
+ aPoint = GetObjectImpl(thePoint);
+ if (aPoint.IsNull()) return aGEOMObject._retn();
+ }
//Perform the scale
GetOperations()->ScaleShape(anObject, aPoint, theFactor);
+ // Update GUI.
+ UpdateGUIForObject(theObject);
+
return aGEOMObject._retn();
}
/*!
* ScaleShapeCopy
*/
-//=============================================================================
+//=============================================================================
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 (thePoint == NULL || theObject == NULL) return aGEOMObject._retn();
-
//Get the basic object
- Handle(GEOM_Object) aBasicObject =
- GetOperations()->GetEngine()->GetObject(theObject->GetStudyID(), theObject->GetEntry());
+ Handle(::GEOM_Object) aBasicObject = GetObjectImpl(theObject);
if (aBasicObject.IsNull()) return aGEOMObject._retn();
//Get the point
- Handle(GEOM_Object) aPoint =
- GetOperations()->GetEngine()->GetObject(thePoint->GetStudyID(), thePoint->GetEntry());
- if (aPoint.IsNull()) return aGEOMObject._retn();
+ Handle(::GEOM_Object) aPoint;
+ if (!thePoint->_is_nil()) {
+ aPoint = GetObjectImpl(thePoint);
+ if (aPoint.IsNull()) return aGEOMObject._retn();
+ }
//Perform the scale
- Handle(GEOM_Object) anObject =
+ Handle(::GEOM_Object) anObject =
GetOperations()->ScaleShapeCopy(aBasicObject, aPoint, theFactor);
if (!GetOperations()->IsDone() || anObject.IsNull())
return aGEOMObject._retn();
return GetObject(anObject);
}
+//=============================================================================
+/*!
+ * ScaleShapeAlongAxes
+ */
+//=============================================================================
+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_var aGEOMObject = GEOM::GEOM_Object::_duplicate(theObject);
+
+ //Set a not done flag
+ GetOperations()->SetNotDone();
+
+ if (theObject->_is_nil()) return aGEOMObject._retn();
+
+ //check if the object is a sub-shape
+ if (!theObject->IsMainShape()) {
+ GetOperations()->SetErrorCode(SUBSHAPE_ERROR);
+ return aGEOMObject._retn();
+ }
+
+ //Get the object itself
+ Handle(::GEOM_Object) anObject = GetObjectImpl(theObject);
+ if (anObject.IsNull()) return aGEOMObject._retn();
+
+ //Get the point
+ Handle(::GEOM_Object) aPoint;
+ if (!thePoint->_is_nil()) {
+ aPoint = GetObjectImpl(thePoint);
+ if (aPoint.IsNull()) return aGEOMObject._retn();
+ }
+
+ //Perform the scale
+ GetOperations()->ScaleShapeAlongAxes
+ (anObject, aPoint, theFactorX, theFactorY, theFactorZ, /*doCopy*/false);
+
+ // Update GUI.
+ UpdateGUIForObject(theObject);
+
+ return aGEOMObject._retn();
+}
+
+//=============================================================================
+/*!
+ * ScaleShapeAlongAxesCopy
+ */
+//=============================================================================
+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_var aGEOMObject;
+
+ //Set a not done flag
+ GetOperations()->SetNotDone();
+
+ //Get the basic object
+ Handle(::GEOM_Object) aBasicObject = GetObjectImpl(theObject);
+ if (aBasicObject.IsNull()) return aGEOMObject._retn();
+
+ //Get the point
+ Handle(::GEOM_Object) aPoint;
+ if (!thePoint->_is_nil()) {
+ aPoint = GetObjectImpl(thePoint);
+ if (aPoint.IsNull()) return aGEOMObject._retn();
+ }
+
+ //Perform the scale
+ Handle(::GEOM_Object) anObject = GetOperations()->ScaleShapeAlongAxes
+ (aBasicObject, aPoint, theFactorX, theFactorY, theFactorZ, /*doCopy*/true);
+ if (!GetOperations()->IsDone() || anObject.IsNull())
+ return aGEOMObject._retn();
+
+ return GetObject(anObject);
+}
+
//=============================================================================
/*!
* PositionShape
*/
-//=============================================================================
+//=============================================================================
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 || theStartLCS == NULL || theEndLCS == NULL)
+ if (CORBA::is_nil(theObject) || CORBA::is_nil(theEndLCS))
return aGEOMObject._retn();
- //check if the object is a subshape
- if(!theObject->IsMainShape()) {
+ //check if the object is a sub-shape
+ if (!theObject->IsMainShape()) {
GetOperations()->SetErrorCode(SUBSHAPE_ERROR);
return aGEOMObject._retn();
}
//Get the basic object
- Handle(GEOM_Object) anObject =
- GetOperations()->GetEngine()->GetObject(theObject->GetStudyID(), theObject->GetEntry());
+ Handle(::GEOM_Object) anObject = GetObjectImpl(theObject);
if (anObject.IsNull()) return aGEOMObject._retn();
- //Get the Start LCS
- Handle(GEOM_Object) aStartLCS =
- GetOperations()->GetEngine()->GetObject(theStartLCS->GetStudyID(), theStartLCS->GetEntry());
- if (aStartLCS.IsNull()) return aGEOMObject._retn();
+ //Get the Start LCS (may be NULL for positioning from global LCS)
+ Handle(::GEOM_Object) aStartLCS;
+ if (!CORBA::is_nil(theStartLCS)) {
+ aStartLCS = GetObjectImpl(theStartLCS);
+ if (aStartLCS.IsNull()) return aGEOMObject._retn();
+ }
//Get the End LCS
- Handle(GEOM_Object) aEndLCS =
- GetOperations()->GetEngine()->GetObject(theEndLCS->GetStudyID(), theEndLCS->GetEntry());
+ Handle(::GEOM_Object) aEndLCS = GetObjectImpl(theEndLCS);
if (aEndLCS.IsNull()) return aGEOMObject._retn();
//Perform the Position
GetOperations()->PositionShape(anObject, aStartLCS, aEndLCS);
+ // Update GUI.
+ UpdateGUIForObject(theObject);
+
return aGEOMObject._retn();
}
/*!
* PositionShapeCopy
*/
-//=============================================================================
+//=============================================================================
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 || theStartLCS == NULL || theEndLCS == NULL)
- return aGEOMObject._retn();
-
//Get the basic object
- Handle(GEOM_Object) aBasicObject =
- GetOperations()->GetEngine()->GetObject(theObject->GetStudyID(), theObject->GetEntry());
+ Handle(::GEOM_Object) aBasicObject = GetObjectImpl(theObject);
if (aBasicObject.IsNull()) return aGEOMObject._retn();
- //Get the Start LCS
- Handle(GEOM_Object) aStartLCS =
- GetOperations()->GetEngine()->GetObject(theStartLCS->GetStudyID(), theStartLCS->GetEntry());
- if (aStartLCS.IsNull()) return aGEOMObject._retn();
+ //Get the Start LCS (may be NULL for positioning from global LCS)
+ Handle(::GEOM_Object) aStartLCS;
+ if (!CORBA::is_nil(theStartLCS)) {
+ aStartLCS = GetObjectImpl(theStartLCS);
+ if (aStartLCS.IsNull()) return aGEOMObject._retn();
+ }
//Get the End LCS
- Handle(GEOM_Object) aEndLCS =
- GetOperations()->GetEngine()->GetObject(theEndLCS->GetStudyID(), theEndLCS->GetEntry());
+ Handle(::GEOM_Object) aEndLCS = GetObjectImpl(theEndLCS);
if (aEndLCS.IsNull()) return aGEOMObject._retn();
//Perform the position
- Handle(GEOM_Object) anObject =
+ Handle(::GEOM_Object) anObject =
GetOperations()->PositionShapeCopy(aBasicObject, aStartLCS, aEndLCS);
if (!GetOperations()->IsDone() || anObject.IsNull())
return aGEOMObject._retn();
return GetObject(anObject);
}
+//=============================================================================
+/*!
+ * PositionAlongPath
+ */
+//=============================================================================
+GEOM::GEOM_Object_ptr GEOM_ITransformOperations_i::PositionAlongPath
+ (GEOM::GEOM_Object_ptr theObject,
+ GEOM::GEOM_Object_ptr thePath,
+ CORBA::Double theDistance,
+ CORBA::Boolean theCopy,
+ CORBA::Boolean theReverse)
+{
+ GEOM::GEOM_Object_var aGEOMObject;
+
+ //Set a not done flag
+ GetOperations()->SetNotDone();
+
+ //Get the basic object
+ Handle(::GEOM_Object) aBasicObject = GetObjectImpl(theObject);
+ if (aBasicObject.IsNull()) return aGEOMObject._retn();
+
+ //Get the path object
+ Handle(::GEOM_Object) aPathObject = GetObjectImpl(thePath);
+ if (aPathObject.IsNull()) return aGEOMObject._retn();
+
+ //Perform the position
+ Handle(::GEOM_Object) anObject =
+ GetOperations()->PositionAlongPath(aBasicObject, aPathObject, theDistance, theCopy, theReverse);
+ if (!GetOperations()->IsDone() || anObject.IsNull())
+ return aGEOMObject._retn();
+
+ if (!theCopy) {
+ // Update GUI.
+ UpdateGUIForObject(theObject);
+ }
+
+ return GetObject(anObject);
+}
+
//=============================================================================
/*!
* MultiTranslate1D
*/
-//=============================================================================
+//=============================================================================
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();
+ GetOperations()->SetNotDone();
GEOM::GEOM_Object_var aGEOMObject;
- if (theObject == NULL || theVector == NULL) return aGEOMObject._retn();
-
//Get the object itself
- Handle(GEOM_Object) aBasicObject = GetOperations()->GetEngine()->GetObject
- (theObject->GetStudyID(), theObject->GetEntry());
+ Handle(::GEOM_Object) aBasicObject = GetObjectImpl(theObject);
if (aBasicObject.IsNull()) return aGEOMObject._retn();
//Get the vector of translation
- Handle(GEOM_Object) aVector = GetOperations()->GetEngine()->GetObject
- (theVector->GetStudyID(), theVector->GetEntry());
- if (aVector.IsNull()) return aGEOMObject._retn();
+ Handle(::GEOM_Object) aVector = GetObjectImpl(theVector);
+ //if (aVector.IsNull()) return aGEOMObject._retn(); // DX by default
//Perform the translation
- Handle(GEOM_Object) anObject =
- GetOperations()->Translate1D(aBasicObject, aVector, theStep, theNbTimes);
+ Handle(::GEOM_Object) anObject =
+ GetOperations()->Translate1D(aBasicObject, aVector, theStep, theNbTimes);
if (!GetOperations()->IsDone() || anObject.IsNull()) return aGEOMObject._retn();
- return GetObject(anObject);
+ return GetObject(anObject);
}
//=============================================================================
/*!
* MultiTranslate2D
*/
-//=============================================================================
-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 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)
{
//Set a not done flag
- GetOperations()->SetNotDone();
+ GetOperations()->SetNotDone();
GEOM::GEOM_Object_var aGEOMObject;
- if (theObject == NULL || theVector1 == NULL || theVector2 == NULL) return aGEOMObject._retn();
-
//Get the object itself
- Handle(GEOM_Object) aBasicObject = GetOperations()->GetEngine()->GetObject
- (theObject->GetStudyID(), theObject->GetEntry());
+ Handle(::GEOM_Object) aBasicObject = GetObjectImpl(theObject);
if (aBasicObject.IsNull()) return aGEOMObject._retn();
//Get the vector1 of translation
- Handle(GEOM_Object) aVector1 = GetOperations()->GetEngine()->GetObject
- (theVector1->GetStudyID(), theVector1->GetEntry());
- if (aVector1.IsNull()) return aGEOMObject._retn();
+ Handle(::GEOM_Object) aVector1 = GetObjectImpl(theVector1);
+ //if (aVector1.IsNull()) return aGEOMObject._retn(); // DX by default
//Get the vector2 of translation
- Handle(GEOM_Object) aVector2 = GetOperations()->GetEngine()->GetObject
- (theVector2->GetStudyID(), theVector2->GetEntry());
- if (aVector2.IsNull()) return aGEOMObject._retn();
+ Handle(::GEOM_Object) aVector2 = GetObjectImpl(theVector2);
+ //if (aVector2.IsNull()) return aGEOMObject._retn(); // DY by default
//Perform the translation
- Handle(GEOM_Object) anObject = GetOperations()->Translate2D
- (aBasicObject, aVector1, theStep1, theNbTimes1, aVector2, theStep2, theNbTimes2);
+ Handle(::GEOM_Object) anObject = GetOperations()->Translate2D
+ (aBasicObject, aVector1, theStep1, theNbTimes1, aVector2, theStep2, theNbTimes2);
if (!GetOperations()->IsDone() || anObject.IsNull()) return aGEOMObject._retn();
- return GetObject(anObject);
+ return GetObject(anObject);
}
//=============================================================================
/*!
* MultiRotate1D
*/
-//=============================================================================
+//=============================================================================
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();
+ GetOperations()->SetNotDone();
GEOM::GEOM_Object_var aGEOMObject;
- if (theObject == NULL || theVector == NULL) return aGEOMObject._retn();
+ //Get the object itself
+ Handle(::GEOM_Object) aBasicObject = GetObjectImpl(theObject);
+ if (aBasicObject.IsNull()) return aGEOMObject._retn();
+
+ //Get the a directon of rotation
+ Handle(::GEOM_Object) aVector = GetObjectImpl(theVector);
+ //if (aVector.IsNull()) return aGEOMObject._retn(); // DZ by default
+
+ //Perform the rotation
+ Handle(::GEOM_Object) anObject = GetOperations()->Rotate1D(aBasicObject, aVector, theNbTimes);
+ if (!GetOperations()->IsDone() || anObject.IsNull()) return aGEOMObject._retn();
+
+ return GetObject(anObject);
+}
+
+//=============================================================================
+/*!
+ * MultiRotate1DByStep
+ */
+//=============================================================================
+GEOM::GEOM_Object_ptr GEOM_ITransformOperations_i::MultiRotate1DByStep (GEOM::GEOM_Object_ptr theObject,
+ GEOM::GEOM_Object_ptr theVector,
+ CORBA::Double theAngleStep,
+ CORBA::Long theNbSteps)
+{
+ //Set a not done flag
+ GetOperations()->SetNotDone();
+
+ GEOM::GEOM_Object_var aGEOMObject;
//Get the object itself
- Handle(GEOM_Object) aBasicObject = GetOperations()->GetEngine()->GetObject
- (theObject->GetStudyID(), theObject->GetEntry());
+ Handle(::GEOM_Object) aBasicObject = GetObjectImpl(theObject);
if (aBasicObject.IsNull()) return aGEOMObject._retn();
//Get the a directon of rotation
- Handle(GEOM_Object) aVector = GetOperations()->GetEngine()->GetObject
- (theVector->GetStudyID(), theVector->GetEntry());
- if (aVector.IsNull()) return aGEOMObject._retn();
+ Handle(::GEOM_Object) aVector = GetObjectImpl(theVector);
+ //if (aVector.IsNull()) return aGEOMObject._retn(); // DZ by default
//Perform the rotation
- Handle(GEOM_Object) anObject = GetOperations()->Rotate1D(aBasicObject, aVector, theNbTimes);
+ Handle(::GEOM_Object) anObject = GetOperations()->Rotate1D(aBasicObject, aVector, theAngleStep, theNbSteps);
if (!GetOperations()->IsDone() || anObject.IsNull()) return aGEOMObject._retn();
- return GetObject(anObject);
+ return GetObject(anObject);
+}
+
+//=============================================================================
+/*!
+ * MultiRotate2DNbTimes
+ */
+//=============================================================================
+GEOM::GEOM_Object_ptr GEOM_ITransformOperations_i::MultiRotate2DNbTimes (GEOM::GEOM_Object_ptr theObject,
+ GEOM::GEOM_Object_ptr theVector,
+ CORBA::Long theNbObjects,
+ CORBA::Double theRadialStep,
+ CORBA::Long theNbSteps)
+{
+ //Set a not done flag
+ GetOperations()->SetNotDone();
+
+ GEOM::GEOM_Object_var aGEOMObject;
+
+ //Get the object itself
+ Handle(::GEOM_Object) aBasicObject = GetObjectImpl(theObject);
+ if (aBasicObject.IsNull()) return aGEOMObject._retn();
+
+ //Get the a directon of rotation
+ Handle(::GEOM_Object) aVector = GetObjectImpl(theVector);
+ //if (aVector.IsNull()) return aGEOMObject._retn(); // DZ by default
+
+ //Perform the rotation
+ Handle(::GEOM_Object) anObject = GetOperations()->Rotate2D
+ (aBasicObject, aVector, theNbObjects, theRadialStep, theNbSteps);
+ if (!GetOperations()->IsDone() || anObject.IsNull()) return aGEOMObject._retn();
+
+ return GetObject(anObject);
+}
+
+//=============================================================================
+/*!
+ * MultiRotate2DByStep
+ */
+//=============================================================================
+GEOM::GEOM_Object_ptr GEOM_ITransformOperations_i::MultiRotate2DByStep (GEOM::GEOM_Object_ptr theObject,
+ 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;
+
+ //Get the object itself
+ Handle(::GEOM_Object) aBasicObject = GetObjectImpl(theObject);
+ if (aBasicObject.IsNull()) return aGEOMObject._retn();
+
+ //Get the a directon of rotation
+ Handle(::GEOM_Object) aVector = GetObjectImpl(theVector);
+ //if (aVector.IsNull()) return aGEOMObject._retn(); // DZ by default
+
+ //Perform the rotation
+ Handle(::GEOM_Object) anObject = GetOperations()->Rotate2D
+ (aBasicObject, aVector, theAngle, theNbTimes1, theStep, theNbTimes2);
+ if (!GetOperations()->IsDone() || anObject.IsNull()) return aGEOMObject._retn();
+
+ return GetObject(anObject);
}
//=============================================================================
/*!
* MultiRotate2D
*/
-//=============================================================================
+//=============================================================================
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();
+ GetOperations()->SetNotDone();
GEOM::GEOM_Object_var aGEOMObject;
- if (theObject == NULL || theVector == NULL) return aGEOMObject._retn();
-
//Get the object itself
- Handle(GEOM_Object) aBasicObject = GetOperations()->GetEngine()->GetObject
- (theObject->GetStudyID(), theObject->GetEntry());
+ Handle(::GEOM_Object) aBasicObject = GetObjectImpl(theObject);
if (aBasicObject.IsNull()) return aGEOMObject._retn();
//Get the a directon of rotation
- Handle(GEOM_Object) aVector = GetOperations()->GetEngine()->GetObject
- (theVector->GetStudyID(), theVector->GetEntry());
- if (aVector.IsNull()) return aGEOMObject._retn();
+ Handle(::GEOM_Object) aVector = GetObjectImpl(theVector);
+ //if (aVector.IsNull()) return aGEOMObject._retn(); // DZ by default
+
+ double anAngle = M_PI * theAngle / 180.;
//Perform the rotation
- Handle(GEOM_Object) anObject = GetOperations()->Rotate2D
- (aBasicObject, aVector, theAngle, theNbTimes1, theStep, theNbTimes2);
+ Handle(::GEOM_Object) anObject = GetOperations()->Rotate2D
+ (aBasicObject, aVector, anAngle, theNbTimes1, theStep, theNbTimes2);
if (!GetOperations()->IsDone() || anObject.IsNull()) return aGEOMObject._retn();
- return GetObject(anObject);
+ return GetObject(anObject);
+}
+
+//=============================================================================
+/*!
+ * RotateThreePoints
+ */
+//=============================================================================
+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)
+{
+ //Set a not done flag
+ GetOperations()->SetNotDone();
+ GEOM::GEOM_Object_var aGEOMObject;
+
+ if (CORBA::is_nil(theObject))
+ return aGEOMObject._retn();
+
+ //check if the object is a sub-shape
+ if (!theObject->IsMainShape()) {
+ GetOperations()->SetErrorCode(SUBSHAPE_ERROR);
+ 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();
+
+ //Get the central point of rotation
+ Handle(::GEOM_Object) aCentPoint = GetObjectImpl(theCentPoint);
+ if (aCentPoint.IsNull()) return aGEOMObject._retn();
+
+ //Get the first point
+ Handle(::GEOM_Object) aPoint1 = GetObjectImpl(thePoint1);
+ if (aPoint1.IsNull()) return aGEOMObject._retn();
+
+ //Get the second point
+ Handle(::GEOM_Object) aPoint2 = GetObjectImpl(thePoint2);
+ if (aPoint2.IsNull()) return aGEOMObject._retn();
+
+ //Perform the translation
+ GetOperations()->RotateThreePoints(anObject, aCentPoint, aPoint1, aPoint2);
+
+ // Update GUI.
+ UpdateGUIForObject(theObject);
+
+ return aGEOMObject._retn();
+}
+
+//=============================================================================
+/*!
+ * RotateThreePointsCopy
+ */
+//=============================================================================
+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_var aGEOMObject;
+
+ //Set a not done flag
+ GetOperations()->SetNotDone();
+
+ //Get the object itself
+ Handle(::GEOM_Object) aBasicObject = GetObjectImpl(theObject);
+ if (aBasicObject.IsNull()) return aGEOMObject._retn();
+
+ //Get the central point of rotation
+ Handle(::GEOM_Object) aCentPoint = GetObjectImpl(theCentPoint);
+ if (aCentPoint.IsNull()) return aGEOMObject._retn();
+
+ //Get the first point
+ Handle(::GEOM_Object) aPoint1 = GetObjectImpl(thePoint1);
+ if (aPoint1.IsNull()) return aGEOMObject._retn();
+
+ //Get the second point
+ Handle(::GEOM_Object) aPoint2 = GetObjectImpl(thePoint2);
+ if (aPoint2.IsNull()) return aGEOMObject._retn();
+
+ //Perform the rotation
+ 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();
+ }
+
+ return GetObject(aResObject);
}