mirror of
https://git.dev.opencascade.org/repos/occt.git
synced 2025-08-09 13:22:24 +03:00
0029606: [Regression vs 7.0] BRepClass3d_SolidClassifier classifies the point as IN while it is ON
Simple treatment of some analytical cases when curve is parallel or belongs surface is added in curve - face/surface intersection algorithm Treatment such cases is added in classifier algorithm Test case added
This commit is contained in:
@@ -135,7 +135,8 @@ IntCurvesFace_Intersector::IntCurvesFace_Intersector(const TopoDS_Face& Face,
|
||||
nbpnt(0),
|
||||
PtrOnPolyhedron(NULL),
|
||||
PtrOnBndBounding(NULL),
|
||||
myUseBoundTol (UseBToler)
|
||||
myUseBoundTol (UseBToler),
|
||||
myIsParallel(Standard_False)
|
||||
{
|
||||
BRepAdaptor_Surface surface;
|
||||
face = Face;
|
||||
@@ -336,6 +337,10 @@ void IntCurvesFace_Intersector::InternalCall(const IntCurveSurface_HInter &HICS,
|
||||
} //-- classifier state is IN or ON
|
||||
} //-- Loop on Intersection points.
|
||||
} //-- HICS.IsDone()
|
||||
else if (HICS.IsDone())
|
||||
{
|
||||
myIsParallel = HICS.IsParallel();
|
||||
}
|
||||
}
|
||||
//=======================================================================
|
||||
//function : Perform
|
||||
|
@@ -113,7 +113,12 @@ public:
|
||||
//! or TopAbs_ON
|
||||
//! ( the point is on a boudary of the face).
|
||||
TopAbs_State State (const Standard_Integer I) const;
|
||||
|
||||
|
||||
//! Returns true if curve is parallel or belongs face surface
|
||||
//! This case is recognized only for some pairs
|
||||
//! of analytical curves and surfaces (plane - line, ...)
|
||||
Standard_Boolean IsParallel() const;
|
||||
|
||||
//! Returns the significant face used to determine
|
||||
//! the intersection.
|
||||
const TopoDS_Face& Face() const;
|
||||
@@ -160,6 +165,9 @@ private:
|
||||
Standard_Address PtrOnPolyhedron;
|
||||
Standard_Address PtrOnBndBounding;
|
||||
Standard_Boolean myUseBoundTol;
|
||||
Standard_Boolean myIsParallel; //Curve is "parallel" face surface
|
||||
//This case is recognized only for some pairs
|
||||
//of analytical curves and surfaces (plane - line, ...)
|
||||
|
||||
|
||||
};
|
||||
|
@@ -58,7 +58,10 @@ inline TopAbs_State IntCurvesFace_Intersector::State(const Standard_Integer i) c
|
||||
}
|
||||
// Modified by skv - Wed Sep 3 15:34:20 2003 OCC578 End
|
||||
//============================================================================
|
||||
inline const TopoDS_Face& IntCurvesFace_Intersector::Face() const {
|
||||
inline Standard_Boolean IntCurvesFace_Intersector::IsParallel() const {
|
||||
return myIsParallel;
|
||||
}
|
||||
inline const TopoDS_Face& IntCurvesFace_Intersector::Face() const {
|
||||
return(face);
|
||||
}
|
||||
//============================================================================
|
||||
|
Reference in New Issue
Block a user