IntTools/IntTools_BeanFaceIntersector.cxx - decreasing parameter aDeltaRestrictor in method ComputeRangeFromStartPoint(...) to avoid "jumping" across the common part boundary.
IntTools/IntTools_EdgeFace.cxx - method IsCoincident() - improving criteria of coincidence between edge and face.
Standard_Integer aValidIndex = theIndex;
Standard_Real aMinDelta = myCurveResolution * 0.5;
- Standard_Real aDeltaRestrictor = myLastParameter - myFirstParameter;
+ Standard_Real aDeltaRestrictor = 0.1 * (myLastParameter - myFirstParameter);
if(aMinDelta > aDeltaRestrictor)
aMinDelta = aDeltaRestrictor * 0.5;
aDelta = (pointfound) ? (aDelta * 2.) : (aDelta * 0.5);
aDelta = (aDelta < aDeltaRestrictor) ? aDelta : aDeltaRestrictor;
-
+
aCurPar = (ToIncreaseParameter) ? (aPrevPar + aDelta) : (aPrevPar - aDelta);
myS.GetType() == GeomAbs_Plane)
aNbSeg = 2; // Check only three points for Line/Plane intersection
- const Standard_Real aTresh=0.5;
+ const Standard_Real aTresh = 0.5;
const Standard_Integer aTreshIdxF = RealToInt((aNbSeg+1)*0.25),
aTreshIdxL = RealToInt((aNbSeg+1)*0.75);
const Handle(Geom_Surface) aSurf = BRep_Tool::Surface(myFace);
aT1=myRange.First();
aT2=myRange.Last();
+ Standard_Real aBndShift = 0.01 * (aT2 - aT1);
+ //Shifting first and last curve points in order to avoid projection
+ //on surface boundary and rejection projection point with minimal distance
+ aT1 += aBndShift;
+ aT2 -= aBndShift;
dT=(aT2-aT1)/aNbSeg;
//
Standard_Boolean isClassified = Standard_False;
//
aD=aProjector.LowerDistance();
- if (aD>myCriteria) {
- continue;
+ if (aD > myCriteria) {
+ if (aD > 100. * myCriteria)
+ return Standard_False;
+ else
+ continue;
}
//
-puts "TODO OCC27469 ALL: Error : is WRONG because number of"
-
-puts "========"
-puts "OCC27469"
-puts "========"
+puts "===================================================================="
+puts "OCC27469 Regression vs 6.9.1: Wrong result of Edge/Face intersection"
+puts "===================================================================="
puts ""
-###############################################################
-# Regression vs 6.9.1: Wrong result of Edge/Face intersection
-###############################################################
restore [locate_data_file bug27469_shapes.brep] b
bfillds
bbuild result
-checknbshapes result -edge 35
+checkshape result
+checknbshapes result -face 1 -wire 3 -edge 35 -vertex 30
+checkmaxtol result -min_tol 2.42e-7
+checkprops result -l 38486.5
+
+checkview -display result -2d -path ${imagedir}/${test_image}.png
\ No newline at end of file
-puts "TODO OCC27469 ALL: Faulty shapes in variables faulty_1 to faulty_"
-
-puts "========"
-puts "OCC27469"
-puts "========"
+puts "===================================================================="
+puts "OCC27469 Regression vs 6.9.1: Wrong result of Edge/Face intersection"
+puts "===================================================================="
puts ""
-###############################################################
-# Regression vs 6.9.1: Wrong result of Edge/Face intersection
-###############################################################
restore [locate_data_file bug27469_shapes.brep] b
bbuild result
checkshape result
+checknbshapes result -solid 7 -shell 7 -face 39 -wire 46 -edge 67 -vertex 34
+checkmaxtol result -min_tol 2.17e-2
+checkprops result -l 352002
+checkview -display result -2d -path ${imagedir}/${test_image}.png