X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FGEOMImpl%2FGEOMImpl_IBasicOperations.cxx;h=cb81f958f70ce6cc3eb20189729b77e72f043b7d;hb=ed87a1f7c81ec39992aff1f463d73dc81e5791e0;hp=e29905bd358e9baf5628c271f3781eda35c999ed;hpb=73555c78ebf12a1fdb85157b8e7934ad566ae90a;p=modules%2Fgeom.git diff --git a/src/GEOMImpl/GEOMImpl_IBasicOperations.cxx b/src/GEOMImpl/GEOMImpl_IBasicOperations.cxx index e29905bd3..cb81f958f 100644 --- a/src/GEOMImpl/GEOMImpl_IBasicOperations.cxx +++ b/src/GEOMImpl/GEOMImpl_IBasicOperations.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2014 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 @@ -6,7 +6,7 @@ // 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. +// 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 @@ -106,9 +106,7 @@ Handle(GEOM_Object) GEOMImpl_IBasicOperations::MakePointXYZ //Compute the point value try { -#if OCC_VERSION_LARGE > 0x06010000 OCC_CATCH_SIGNALS; -#endif if (!GetSolver()->ComputeFunction(aFunction)) { SetErrorCode("Point driver failed"); return NULL; @@ -161,9 +159,7 @@ Handle(GEOM_Object) GEOMImpl_IBasicOperations::MakePointWithReference //Compute the point value try { -#if OCC_VERSION_LARGE > 0x06010000 OCC_CATCH_SIGNALS; -#endif if (!GetSolver()->ComputeFunction(aFunction)) { SetErrorCode("Point driver failed"); return NULL; @@ -194,7 +190,7 @@ Handle(GEOM_Object) GEOMImpl_IBasicOperations::makePointOnGeom double theParam2, double theParam3, const PointLocation theLocation, - Handle(GEOM_Object) theRefPoint) + Handle(GEOM_Object) theRefPoint) { SetErrorCode(KO); @@ -208,10 +204,11 @@ Handle(GEOM_Object) GEOMImpl_IBasicOperations::makePointOnGeom switch( theLocation ) { case PointOn_CurveByParam: fType = POINT_CURVE_PAR; break; - case PointOn_CurveByLength: fType = POINT_CURVE_LENGTH; break; + case PointOn_CurveByLength: fType = POINT_CURVE_LENGTH; break; case PointOn_CurveByCoord: fType = POINT_CURVE_COORD; break; case PointOn_SurfaceByParam: fType = POINT_SURFACE_PAR; break; case PointOn_SurfaceByCoord: fType = POINT_SURFACE_COORD; break; + case PointOn_Face: fType = POINT_FACE_ANY; break; default: break; } Handle(GEOM_Function) aFunction = aPoint->AddFunction(GEOMImpl_PointDriver::GetID(), fType); @@ -254,14 +251,16 @@ Handle(GEOM_Object) GEOMImpl_IBasicOperations::makePointOnGeom aPI.SetX(theParam1); aPI.SetY(theParam2); aPI.SetZ(theParam3); + break; + case PointOn_Face: + aPI.SetSurface(aRefFunction); + break; default: break; } //Compute the point value try { -#if OCC_VERSION_LARGE > 0x06010000 OCC_CATCH_SIGNALS; -#endif if (!GetSolver()->ComputeFunction(aFunction)) { SetErrorCode("Point driver failed"); return NULL; @@ -285,19 +284,24 @@ Handle(GEOM_Object) GEOMImpl_IBasicOperations::makePointOnGeom << theGeomObj << ", " << theParam1 << ", " << theRefPoint << ")"; break; case PointOn_CurveByCoord: - GEOM::TPythonDump(aFunction) << aPoint << " = geompy.MakeVertexOnCurveByCoord(" - << theGeomObj << ", " << theParam1 - << ", " << theParam2 << ", " << theParam3 << ")"; + GEOM::TPythonDump(aFunction) << aPoint << " = geompy.MakeVertexOnCurveByCoord(" + << theGeomObj << ", " << theParam1 + << ", " << theParam2 << ", " << theParam3 << ")"; break; case PointOn_SurfaceByParam: - GEOM::TPythonDump(aFunction) << aPoint << " = geompy.MakeVertexOnSurface(" - << theGeomObj << ", " << theParam1 - << ", " << theParam2 << ")"; + GEOM::TPythonDump(aFunction) << aPoint << " = geompy.MakeVertexOnSurface(" + << theGeomObj << ", " << theParam1 + << ", " << theParam2 << ")"; break; case PointOn_SurfaceByCoord: - GEOM::TPythonDump(aFunction) << aPoint << " = geompy.MakeVertexOnSurfaceByCoord(" - << theGeomObj << ", " << theParam1 - << ", " << theParam2 << ", " << theParam3 << ")"; + GEOM::TPythonDump(aFunction) << aPoint << " = geompy.MakeVertexOnSurfaceByCoord(" + << theGeomObj << ", " << theParam1 + << ", " << theParam2 << ", " << theParam3 << ")"; + break; + case PointOn_Face: + GEOM::TPythonDump(aFunction) << aPoint << " = geompy.MakeVertexInsideFace(" + << theGeomObj << ")"; + break; default: break; } @@ -337,8 +341,8 @@ Handle(GEOM_Object) GEOMImpl_IBasicOperations::MakePointOnCurveByCoord //============================================================================= Handle(GEOM_Object) GEOMImpl_IBasicOperations::MakePointOnCurveByLength (Handle(GEOM_Object) theCurve, - double theLength, - Handle(GEOM_Object) theStartPoint) + double theLength, + Handle(GEOM_Object) theStartPoint) { return makePointOnGeom(theCurve, theLength, 0.0, 0.0, PointOn_CurveByLength, theStartPoint); } @@ -370,6 +374,15 @@ Handle(GEOM_Object) GEOMImpl_IBasicOperations::MakePointOnSurfaceByCoord return makePointOnGeom(theSurface, theXParam, theYParam, theZParam, PointOn_SurfaceByCoord); } +//============================================================================= +/*! + * MakePointOnFace + */ +//============================================================================= +Handle(GEOM_Object) GEOMImpl_IBasicOperations::MakePointOnFace (Handle(GEOM_Object) theFace) +{ + return makePointOnGeom(theFace, 0., 0., 0., PointOn_Face); +} //============================================================================= /*! @@ -403,9 +416,7 @@ Handle(GEOM_Object) GEOMImpl_IBasicOperations::MakePointOnLinesIntersection //Compute the point value try { -#if OCC_VERSION_LARGE > 0x06010000 OCC_CATCH_SIGNALS; -#endif if (!GetSolver()->ComputeFunction(aFunction)) { SetErrorCode("Point driver failed"); return NULL; @@ -456,9 +467,7 @@ Handle(GEOM_Object) GEOMImpl_IBasicOperations::MakeTangentOnCurve //Compute the vector value try { -#if OCC_VERSION_LARGE > 0x06010000 OCC_CATCH_SIGNALS; -#endif if (!GetSolver()->ComputeFunction(aFunction)) { SetErrorCode("Vector driver failed"); return NULL; @@ -507,9 +516,7 @@ Handle(GEOM_Object) GEOMImpl_IBasicOperations::MakeVectorDXDYDZ //Compute the Vector value try { -#if OCC_VERSION_LARGE > 0x06010000 OCC_CATCH_SIGNALS; -#endif if (!GetSolver()->ComputeFunction(aFunction)) { SetErrorCode("Vector driver failed"); return NULL; @@ -562,9 +569,7 @@ Handle(GEOM_Object) GEOMImpl_IBasicOperations::MakeVectorTwoPnt //Compute the Vector value try { -#if OCC_VERSION_LARGE > 0x06010000 OCC_CATCH_SIGNALS; -#endif if (!GetSolver()->ComputeFunction(aFunction)) { SetErrorCode("Vector driver failed"); return NULL; @@ -618,9 +623,7 @@ Handle(GEOM_Object) GEOMImpl_IBasicOperations::MakeLine //Compute the Line value try { -#if OCC_VERSION_LARGE > 0x06010000 OCC_CATCH_SIGNALS; -#endif if (!GetSolver()->ComputeFunction(aFunction)) { SetErrorCode("Line driver failed"); return NULL; @@ -673,9 +676,7 @@ Handle(GEOM_Object) GEOMImpl_IBasicOperations::MakeLineTwoPnt //Compute the Line value try { -#if OCC_VERSION_LARGE > 0x06010000 OCC_CATCH_SIGNALS; -#endif if (!GetSolver()->ComputeFunction(aFunction)) { SetErrorCode("Line driver failed"); return NULL; @@ -728,9 +729,7 @@ Handle(GEOM_Object) GEOMImpl_IBasicOperations::MakeLineTwoFaces //Compute the Line value try { -#if OCC_VERSION_LARGE > 0x06010000 OCC_CATCH_SIGNALS; -#endif if (!GetSolver()->ComputeFunction(aFunction)) { SetErrorCode("Line driver failed"); return NULL; @@ -787,9 +786,7 @@ Handle(GEOM_Object) GEOMImpl_IBasicOperations::MakePlaneThreePnt //Compute the Plane value try { -#if OCC_VERSION_LARGE > 0x06010000 OCC_CATCH_SIGNALS; -#endif if (!GetSolver()->ComputeFunction(aFunction)) { SetErrorCode("Plane driver failed"); return NULL; @@ -844,9 +841,7 @@ Handle(GEOM_Object) GEOMImpl_IBasicOperations::MakePlanePntVec //Compute the Plane value try { -#if OCC_VERSION_LARGE > 0x06010000 OCC_CATCH_SIGNALS; -#endif if (!GetSolver()->ComputeFunction(aFunction)) { SetErrorCode("Plane driver failed"); return NULL; @@ -898,9 +893,7 @@ Handle(GEOM_Object) GEOMImpl_IBasicOperations::MakePlaneFace //Compute the Plane value try { -#if OCC_VERSION_LARGE > 0x06010000 OCC_CATCH_SIGNALS; -#endif if (!GetSolver()->ComputeFunction(aFunction)) { SetErrorCode("Plane driver failed"); return NULL; @@ -955,9 +948,7 @@ Handle(GEOM_Object) GEOMImpl_IBasicOperations::MakePlane2Vec //Compute the Plane value try { -#if OCC_VERSION_LARGE > 0x06010000 OCC_CATCH_SIGNALS; -#endif if (!GetSolver()->ComputeFunction(aFunction)) { SetErrorCode("Plane driver failed"); return NULL; @@ -1009,9 +1000,7 @@ Handle(GEOM_Object) GEOMImpl_IBasicOperations::MakePlaneLCS //Compute the Plane value try { -#if OCC_VERSION_LARGE > 0x06010000 OCC_CATCH_SIGNALS; -#endif if (!GetSolver()->ComputeFunction(aFunction)) { SetErrorCode("Plane driver failed"); return NULL; @@ -1063,9 +1052,7 @@ Handle(GEOM_Object) GEOMImpl_IBasicOperations::MakeMarker //Compute the marker value try { -#if OCC_VERSION_LARGE > 0x06010000 OCC_CATCH_SIGNALS; -#endif if (!GetSolver()->ComputeFunction(aFunction)) { SetErrorCode("Marker driver failed"); return NULL; @@ -1117,9 +1104,7 @@ Handle(GEOM_Object) GEOMImpl_IBasicOperations::MakeMarkerFromShape //Compute the marker value try { -#if OCC_VERSION_LARGE > 0x06010000 OCC_CATCH_SIGNALS; -#endif if (!GetSolver()->ComputeFunction(aFunction)) { SetErrorCode("Marker driver failed"); return NULL; @@ -1174,9 +1159,7 @@ Handle(GEOM_Object) GEOMImpl_IBasicOperations::MakeMarkerPntTwoVec //Compute the marker value try { -#if OCC_VERSION_LARGE > 0x06010000 OCC_CATCH_SIGNALS; -#endif if (!GetSolver()->ComputeFunction(aFunction)) { SetErrorCode("Marker driver failed"); return NULL; @@ -1233,9 +1216,7 @@ Handle(GEOM_Object) GEOMImpl_IBasicOperations::MakeTangentPlaneOnFace(const Hand //Compute the Plane value try { -#if OCC_VERSION_LARGE > 0x06010000 OCC_CATCH_SIGNALS; -#endif if (!GetSolver()->ComputeFunction(aFunction)) { SetErrorCode("Plane driver failed"); return NULL;