// theIdx overlaps the current selecting
// volume
//==================================================
-Standard_Boolean Select3D_SensitivePoly::overlapsElement (SelectBasics_SelectingVolumeManager& theMgr,
+Standard_Boolean Select3D_SensitivePoly::overlapsElement (SelectBasics_PickResult& thePickResult,
+ SelectBasics_SelectingVolumeManager& theMgr,
Standard_Integer theElemIdx,
- SelectBasics_PickResult& thePickResult)
+ Standard_Boolean theIsFullInside)
{
if (mySegmentIndexes.IsNull())
+ {
return Standard_False;
+ }
+ else if (theIsFullInside)
+ {
+ return Standard_True;
+ }
const Standard_Integer aSegmentIdx = mySegmentIndexes->Value (theElemIdx);
gp_Pnt aPnt1 = myPolyg.Pnt3d (aSegmentIdx);
gp_Pnt aPnt2 = myPolyg.Pnt3d (aSegmentIdx + 1);
-
return theMgr.Overlaps (aPnt1, aPnt2, thePickResult);
}
// Purpose :
//==================================================
Standard_Boolean Select3D_SensitivePoly::elementIsInside (SelectBasics_SelectingVolumeManager& theMgr,
- const Standard_Integer theElemIdx)
+ Standard_Integer theElemIdx,
+ Standard_Boolean theIsFullInside)
{
- const Standard_Integer aSegmentIdx = mySegmentIndexes->Value (theElemIdx);
+ if (theIsFullInside)
+ {
+ return Standard_True;
+ }
+ const Standard_Integer aSegmentIdx = mySegmentIndexes->Value (theElemIdx);
return theMgr.Overlaps (myPolyg.Pnt3d (aSegmentIdx + 0))
&& theMgr.Overlaps (myPolyg.Pnt3d (aSegmentIdx + 1));
}