X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;ds=sidebyside;f=src%2FSketcherPrs%2FSketcherPrs_SensitivePoint.cpp;h=2edfea572a854fa59d30a71e8ff92b1223362aa2;hb=4f565b2204d3fba046aa8c851abada2a5a17bf6c;hp=f9a49e9d1dc5aab6e79ac398026d097672cf7e66;hpb=98713097930edb46d37ffb835d685ec2ef9439dc;p=modules%2Fshaper.git diff --git a/src/SketcherPrs/SketcherPrs_SensitivePoint.cpp b/src/SketcherPrs/SketcherPrs_SensitivePoint.cpp index f9a49e9d1..2edfea572 100644 --- a/src/SketcherPrs/SketcherPrs_SensitivePoint.cpp +++ b/src/SketcherPrs/SketcherPrs_SensitivePoint.cpp @@ -7,28 +7,26 @@ #include "SketcherPrs_SensitivePoint.h" -#include -#include -#include -#include +#include +#include "SketcherPrs_SymbolPrs.h" + +#define DEBUG_SENSITIVE_TO_BE_CORRECTED -IMPLEMENT_STANDARD_HANDLE(SketcherPrs_SensitivePoint, Select3D_SensitiveEntity); IMPLEMENT_STANDARD_RTTIEXT(SketcherPrs_SensitivePoint, Select3D_SensitiveEntity); -SketcherPrs_SensitivePoint::SketcherPrs_SensitivePoint(const Handle(SelectBasics_EntityOwner)& anOwner, - const Handle(Graphic3d_ArrayOfPoints)& thePntArray, - int theId) -:Select3D_SensitiveEntity(anOwner), myId(theId), myPntArray(thePntArray) +SketcherPrs_SensitivePoint::SketcherPrs_SensitivePoint( + const Handle(SelectBasics_EntityOwner)& anOwner, int theId) +:Select3D_SensitiveEntity(anOwner), myId(theId) { - SetSensitivityFactor(12.); + SetSensitivityFactor(12); } -Standard_Boolean SketcherPrs_SensitivePoint::Matches (SelectBasics_SelectingVolumeManager& theMgr, +Standard_Boolean SketcherPrs_SensitivePoint::Matches(SelectBasics_SelectingVolumeManager& theMgr, SelectBasics_PickResult& thePickResult) { Standard_Real aDepth = RealLast(); Standard_Real aDistToCOG = RealLast(); - gp_Pnt aPnt = myPntArray->Vertice(myId); + gp_Pnt aPnt = Point(); if (!theMgr.Overlaps (aPnt, aDepth)) { thePickResult = SelectBasics_PickResult (aDepth, aDistToCOG); @@ -42,23 +40,43 @@ Standard_Boolean SketcherPrs_SensitivePoint::Matches (SelectBasics_SelectingVolu gp_Pnt SketcherPrs_SensitivePoint::Point() const { - return myPntArray->Vertice(myId); + const Handle(SelectMgr_EntityOwner)& anOwner = + Handle(SelectMgr_EntityOwner)::DownCast(OwnerId()); + const Handle(SketcherPrs_SymbolPrs)& aSymbPrs = + Handle(SketcherPrs_SymbolPrs)::DownCast(anOwner->Selectable()); + return aSymbPrs->pointsArray()->Vertice(myId); } Handle(Select3D_SensitiveEntity) SketcherPrs_SensitivePoint::GetConnected() { - Handle(SketcherPrs_SensitivePoint) aNewEntity = new SketcherPrs_SensitivePoint (myOwnerId, myPntArray, myId); + Handle(SketcherPrs_SensitivePoint) aNewEntity = new SketcherPrs_SensitivePoint (myOwnerId, myId); return aNewEntity; } gp_Pnt SketcherPrs_SensitivePoint::CenterOfGeometry() const { +#ifdef DEBUG_SENSITIVE_TO_BE_CORRECTED + const Handle(SelectMgr_EntityOwner)& anOwner = + Handle(SelectMgr_EntityOwner)::DownCast(OwnerId()); + const Handle(SketcherPrs_SymbolPrs)& aSymbPrs = + Handle(SketcherPrs_SymbolPrs)::DownCast(anOwner->Selectable()); + if (aSymbPrs->pointsArray()->VertexNumber() < myId) + return gp_Pnt(); +#endif return Point(); } Select3D_BndBox3d SketcherPrs_SensitivePoint::BoundingBox() { - gp_Pnt aPnt = myPntArray->Vertice(myId); +#ifdef DEBUG_SENSITIVE_TO_BE_CORRECTED + const Handle(SelectMgr_EntityOwner)& anOwner = + Handle(SelectMgr_EntityOwner)::DownCast(OwnerId()); + const Handle(SketcherPrs_SymbolPrs)& aSymbPrs = + Handle(SketcherPrs_SymbolPrs)::DownCast(anOwner->Selectable()); + if (aSymbPrs->pointsArray()->VertexNumber() < myId) + return Select3D_BndBox3d(); +#endif + gp_Pnt aPnt = Point(); return Select3D_BndBox3d (SelectMgr_Vec3 (aPnt.X(), aPnt.Y(), aPnt.Z()), SelectMgr_Vec3 (aPnt.X(), aPnt.Y(), aPnt.Z())); } @@ -67,3 +85,8 @@ Standard_Integer SketcherPrs_SensitivePoint::NbSubElements() { return 1; } + +void SketcherPrs_SensitivePoint::Clear() +{ + return; +}