mirror of
https://github.com/Open-Cascade-SAS/OCCT.git
synced 2026-06-09 23:46:52 +08:00
0024646: Wrong result done by Boolean Operation algorithm
1. class BOPAlgo_PaveFiller
method void BOPAlgo_PaveFiller::PerformEF()
Do not create intersection vertices in case if it lies ON the boundary of the face.
2. class IntTools_Context
New method
Standard_Boolean IntTools_Context::IsPointInFace
(const gp_Pnt& aP,
const TopoDS_Face& aF,
const Standard_Real aTol)
has been implemented to check if the point IN the face.
3. class IntTools_EdgeFace
method
void IntTools_EdgeEdge::FindBestSolution(const Standard_Real aT11,
const Standard_Real aT12,
const Standard_Real aT21,
const Standard_Real aT22,
Standard_Real& aT1,
Standard_Real& aT2)
Treatment of the touching cases.
Test cases for issue CR24646
Correction of test cases for issue CR24646
This commit is contained in:
@@ -553,6 +553,35 @@ Standard_Boolean IntTools_Context::IsPointInFace
|
||||
return Standard_True;
|
||||
}
|
||||
//=======================================================================
|
||||
//function : IsPointInFace
|
||||
//purpose :
|
||||
//=======================================================================
|
||||
Standard_Boolean IntTools_Context::IsPointInFace
|
||||
(const gp_Pnt& aP,
|
||||
const TopoDS_Face& aF,
|
||||
const Standard_Real aTol)
|
||||
{
|
||||
Standard_Boolean bIn;
|
||||
Standard_Real aDist;
|
||||
//
|
||||
GeomAPI_ProjectPointOnSurf& aProjector=ProjPS(aF);
|
||||
aProjector.Perform(aP);
|
||||
//
|
||||
bIn = aProjector.IsDone();
|
||||
if (bIn) {
|
||||
aDist = aProjector.LowerDistance();
|
||||
if (aDist < aTol) {
|
||||
Standard_Real U, V;
|
||||
//
|
||||
aProjector.LowerDistanceParameters(U, V);
|
||||
gp_Pnt2d aP2D(U, V);
|
||||
bIn = IsPointInFace(aF, aP2D);
|
||||
}
|
||||
}
|
||||
//
|
||||
return bIn;
|
||||
}
|
||||
//=======================================================================
|
||||
//function : IsPointInOnFace
|
||||
//purpose :
|
||||
//=======================================================================
|
||||
|
||||
Reference in New Issue
Block a user