X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;ds=sidebyside;f=src%2FGEOM_I%2FGEOM_ILocalOperations_i.cc;h=98927101167fbf50d8bcade2c1972d07902f3fb7;hb=8aab8f5cb588b34f09bbe2d1e9a0b453a3b3286f;hp=cfd948da190153a5ec622d6610ee3d50b9f4b78e;hpb=d3dd282390888d7dc091ba2c2ffe7923bd7458e6;p=modules%2Fgeom.git diff --git a/src/GEOM_I/GEOM_ILocalOperations_i.cc b/src/GEOM_I/GEOM_ILocalOperations_i.cc index cfd948da1..989271011 100644 --- a/src/GEOM_I/GEOM_ILocalOperations_i.cc +++ b/src/GEOM_I/GEOM_ILocalOperations_i.cc @@ -1,4 +1,26 @@ -using namespace std; +// Copyright (C) 2007-2011 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 +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +// + +#include #include "GEOM_ILocalOperations_i.hh" @@ -15,8 +37,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"); @@ -43,12 +65,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 @@ -67,21 +85,18 @@ 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 int ind = 0; int aLen = theEdges.length(); - list anEdges; + std::list anEdges; for (; ind < aLen; ind++) { anEdges.push_back(theEdges[ind]); } @@ -95,6 +110,38 @@ GEOM::GEOM_Object_ptr GEOM_ILocalOperations_i::MakeFilletEdges return GetObject(anObject); } +//============================================================================= +/*! + * MakeFilletEdges R1 R2 + */ +//============================================================================= +GEOM::GEOM_Object_ptr GEOM_ILocalOperations_i::MakeFilletEdgesR1R2 + (GEOM::GEOM_Object_ptr theShape, CORBA::Double theR1, + CORBA::Double theR2, const GEOM::ListOfLong& theEdges) +{ + GEOM::GEOM_Object_var aGEOMObject; + + //Get the reference shape + Handle(GEOM_Object) aShapeRef = GetObjectImpl(theShape); + if (aShapeRef.IsNull()) return aGEOMObject._retn(); + + //Get the reference edges + int ind = 0; + int aLen = theEdges.length(); + std::list anEdges; + for (; ind < aLen; ind++) { + anEdges.push_back(theEdges[ind]); + } + + //Create the Fillet + Handle(GEOM_Object) anObject = + GetOperations()->MakeFilletEdgesR1R2(aShapeRef, theR1, theR2, anEdges); + if (!GetOperations()->IsDone() || anObject.IsNull()) + return aGEOMObject._retn(); + + return GetObject(anObject); +} + //============================================================================= /*! * MakeFilletFaces @@ -102,21 +149,18 @@ GEOM::GEOM_Object_ptr GEOM_ILocalOperations_i::MakeFilletEdges //============================================================================= 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 int ind = 0; int aLen = theFaces.length(); - list aFaces; + std::list aFaces; for (; ind < aLen; ind++) { aFaces.push_back(theFaces[ind]); } @@ -130,6 +174,102 @@ GEOM::GEOM_Object_ptr GEOM_ILocalOperations_i::MakeFilletFaces return GetObject(anObject); } +//============================================================================= +/*! + * MakeFilletFaces R1 R2 + */ +//============================================================================= +GEOM::GEOM_Object_ptr GEOM_ILocalOperations_i::MakeFilletFacesR1R2 + (GEOM::GEOM_Object_ptr theShape, CORBA::Double theR1, + CORBA::Double theR2, const GEOM::ListOfLong& theFaces) +{ + GEOM::GEOM_Object_var aGEOMObject; + + //Get the reference shape + Handle(GEOM_Object) aShapeRef = GetObjectImpl(theShape); + if (aShapeRef.IsNull()) return aGEOMObject._retn(); + + //Get the reference faces + int ind = 0; + int aLen = theFaces.length(); + std::list aFaces; + for (; ind < aLen; ind++) { + aFaces.push_back(theFaces[ind]); + } + + //Create the Fillet + Handle(GEOM_Object) anObject = + GetOperations()->MakeFilletFacesR1R2(aShapeRef, theR1, theR2, aFaces); + if (!GetOperations()->IsDone() || anObject.IsNull()) + return aGEOMObject._retn(); + + return GetObject(anObject); +} + +//============================================================================= +/*! + * MakeFillet2D + */ +//============================================================================= +GEOM::GEOM_Object_ptr GEOM_ILocalOperations_i::MakeFillet2D + (GEOM::GEOM_Object_ptr theShape, CORBA::Double theR, + const GEOM::ListOfLong& theVertexes) +{ + GEOM::GEOM_Object_var aGEOMObject; + + //Get the reference shape + Handle(GEOM_Object) aShapeRef = GetObjectImpl(theShape); + if (aShapeRef.IsNull()) return aGEOMObject._retn(); + + //Get the reference vertex + int ind = 0; + int aLen = theVertexes.length(); + std::list aVertexes; + for (; ind < aLen; ind++) { + aVertexes.push_back(theVertexes[ind]); + } + + //Create the Fillet + Handle(GEOM_Object) anObject = + GetOperations()->MakeFillet2D(aShapeRef, theR, aVertexes); + if (!GetOperations()->IsDone() || anObject.IsNull()) + return aGEOMObject._retn(); + + return GetObject(anObject); +} + +//============================================================================= +/*! + * MakeFillet1D + */ +//============================================================================= +GEOM::GEOM_Object_ptr GEOM_ILocalOperations_i::MakeFillet1D + (GEOM::GEOM_Object_ptr theShape, CORBA::Double theR, + const GEOM::ListOfLong& theVertexes) +{ + GEOM::GEOM_Object_var aGEOMObject; + + //Get the reference shape (wire) + Handle(GEOM_Object) aShapeRef = GetObjectImpl(theShape); + if (aShapeRef.IsNull()) return aGEOMObject._retn(); + + //Get the reference vertex + int ind = 0; + int aLen = theVertexes.length(); + std::list aVertexes; + for (; ind < aLen; ind++) { + aVertexes.push_back(theVertexes[ind]); + } + + //Create the Fillet + Handle(GEOM_Object) anObject = + GetOperations()->MakeFillet1D(aShapeRef, theR, aVertexes); + if (!GetOperations()->IsDone() || anObject.IsNull()) + return aGEOMObject._retn(); + + return GetObject(anObject); +} + //============================================================================= /*! * MakeChamferAll @@ -140,12 +280,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 @@ -164,16 +300,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 @@ -184,6 +317,30 @@ GEOM::GEOM_Object_ptr GEOM_ILocalOperations_i::MakeChamferEdge return GetObject(anObject); } +//============================================================================= +/*! + * MakeChamferEdgeAD + */ +//============================================================================= +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) +{ + GEOM::GEOM_Object_var aGEOMObject; + + //Get the reference shape + Handle(GEOM_Object) aShapeRef = GetObjectImpl(theShape); + if (aShapeRef.IsNull()) return aGEOMObject._retn(); + + //Create the Chamfer + Handle(GEOM_Object) anObject = + GetOperations()->MakeChamferEdgeAD(aShapeRef, theD, theAngle, theFace1, theFace2); + if (!GetOperations()->IsDone() || anObject.IsNull()) + return aGEOMObject._retn(); + + return GetObject(anObject); +} //============================================================================= /*! @@ -192,22 +349,19 @@ GEOM::GEOM_Object_ptr GEOM_ILocalOperations_i::MakeChamferEdge //============================================================================= 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 int ind = 0; int aLen = theFaces.length(); - list aFaces; + std::list aFaces; for (; ind < aLen; ind++) { aFaces.push_back(theFaces[ind]); } @@ -220,6 +374,104 @@ GEOM::GEOM_Object_ptr GEOM_ILocalOperations_i::MakeChamferFaces return GetObject(anObject); } +//============================================================================= +/*! + * MakeChamferFacesAD + */ +//============================================================================= +GEOM::GEOM_Object_ptr GEOM_ILocalOperations_i::MakeChamferFacesAD + (GEOM::GEOM_Object_ptr theShape, + CORBA::Double theD, CORBA::Double theAngle, + const GEOM::ListOfLong& theFaces) +{ + GEOM::GEOM_Object_var aGEOMObject; + + //Get the reference shape + Handle(GEOM_Object) aShapeRef = GetObjectImpl(theShape); + if (aShapeRef.IsNull()) return aGEOMObject._retn(); + + //Get the reference faces + int ind = 0; + int aLen = theFaces.length(); + std::list aFaces; + for (; ind < aLen; ind++) { + aFaces.push_back(theFaces[ind]); + } + + //Create the Chamfer + Handle(GEOM_Object) anObject = + GetOperations()->MakeChamferFacesAD(aShapeRef, theD, theAngle, aFaces); + if (!GetOperations()->IsDone() || anObject.IsNull()) + return aGEOMObject._retn(); + + return GetObject(anObject); +} + +//============================================================================= +/*! + * MakeChamferEdges + */ +//============================================================================= +GEOM::GEOM_Object_ptr GEOM_ILocalOperations_i::MakeChamferEdges + (GEOM::GEOM_Object_ptr theShape, + CORBA::Double theD1, CORBA::Double theD2, + const GEOM::ListOfLong& theEdges) +{ + GEOM::GEOM_Object_var aGEOMObject; + + //Get the reference shape + Handle(GEOM_Object) aShapeRef = GetObjectImpl(theShape); + if (aShapeRef.IsNull()) return aGEOMObject._retn(); + + //Get the reference edges + int ind = 0; + int aLen = theEdges.length(); + std::list aEdges; + for (; ind < aLen; ind++) { + aEdges.push_back(theEdges[ind]); + } + + //Create the Chamfer + Handle(GEOM_Object) anObject = + GetOperations()->MakeChamferEdges(aShapeRef, theD1, theD2, aEdges); + if (!GetOperations()->IsDone() || anObject.IsNull()) + return aGEOMObject._retn(); + + return GetObject(anObject); +} + +//============================================================================= +/*! + * MakeChamferEdgesAD + */ +//============================================================================= +GEOM::GEOM_Object_ptr GEOM_ILocalOperations_i::MakeChamferEdgesAD + (GEOM::GEOM_Object_ptr theShape, + CORBA::Double theD, CORBA::Double theAngle, + const GEOM::ListOfLong& theEdges) +{ + GEOM::GEOM_Object_var aGEOMObject; + + //Get the reference shape + Handle(GEOM_Object) aShapeRef = GetObjectImpl(theShape); + if (aShapeRef.IsNull()) return aGEOMObject._retn(); + + //Get the reference edges + int ind = 0; + int aLen = theEdges.length(); + std::list aEdges; + for (; ind < aLen; ind++) { + aEdges.push_back(theEdges[ind]); + } + + //Create the Chamfer + Handle(GEOM_Object) anObject = + GetOperations()->MakeChamferEdgesAD(aShapeRef, theD, theAngle, aEdges); + if (!GetOperations()->IsDone() || anObject.IsNull()) + return aGEOMObject._retn(); + + return GetObject(anObject); +} //============================================================================= /*! @@ -227,17 +479,14 @@ GEOM::GEOM_Object_ptr GEOM_ILocalOperations_i::MakeChamferFaces */ //============================================================================= 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 @@ -257,13 +506,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 inside