#include "SketcherPrs_SensitivePoint.h"
-#include <Bnd_Box2d.hxx>
-#include <CSLib_Class2d.hxx>
-#include <ElCLib.hxx>
-#include <TopLoc_Location.hxx>
+#include <Graphic3d_ArrayOfPoints.hxx>
+#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)
+ int theId)
+:Select3D_SensitiveEntity(anOwner), myId(theId)
{
SetSensitivityFactor(12.);
}
{
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);
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()));
}
{
return 1;
}
+
+void SketcherPrs_SensitivePoint::Clear()
+{
+ return;
+}