Current algorithm ignores found triangles intersection (IntPolyh_PMaillageAffinage) and, consequently, cannot find start point for intersection line. Branch fixes this problem.
Test case for issue CR26251
isAdvDone = PerformAdv(aPMaillageFF,aPMaillageFR,aPMaillageRF,aPMaillageRR,nbCouplesAdv);
// advanced interference found
- if(isAdvDone && nbCouplesAdv > 10) {
+ if(isAdvDone && nbCouplesAdv > 0) {
aPMaillageFF->StartPointsChain(TSectionLines,TTangentZones);
aPMaillageFR->StartPointsChain(TSectionLines,TTangentZones);
aPMaillageRF->StartPointsChain(TSectionLines,TTangentZones);
aPMaillageRR,nbCouplesAdv);
// advanced interference found
- if(isAdvDone && nbCouplesAdv > 10) {
+ if(isAdvDone && nbCouplesAdv > 0) {
aPMaillageFF->StartPointsChain(TSectionLines,TTangentZones);
aPMaillageFR->StartPointsChain(TSectionLines,TTangentZones);
aPMaillageRF->StartPointsChain(TSectionLines,TTangentZones);
(FinTTC >= theMaillageS->GetArrayOfTriangles(1).NbTriangles() ||
FinTTC >= theMaillageS->GetArrayOfTriangles(2).NbTriangles()) ) {
return Standard_False;
-}
+ }
*/
//IFV test for parallel surf
if(FinTTC > 200) {
(FinTTC >= theMaillageS->GetArrayOfTriangles(1).NbTriangles() ||
FinTTC >= theMaillageS->GetArrayOfTriangles(2).NbTriangles()) ) {
return Standard_False;
-}
+ }
*/
//IFV test for parallel surf
if(FinTTC > 200) {
--- /dev/null
+puts "============"
+puts "OCC26251"
+puts "============"
+puts ""
+###############################
+## Section curve cannot be found
+###############################
+
+restore [locate_data_file bug26251_b31_3.brep] b1
+restore [locate_data_file bug26251_tank31.brep] b2
+
+bsection result b1 b2
+
+set length 2.49934
+
+set nbshapes_expected "
+Number of shapes in shape
+ VERTEX : 3
+ EDGE : 2
+ WIRE : 0
+ FACE : 0
+ SHELL : 0
+ SOLID : 0
+ COMPSOLID : 0
+ COMPOUND : 1
+ SHAPE : 6
+"
+
+checknbshapes result -ref ${nbshapes_expected} -t -m "Section curve"
+
+explode b2 f
+copy b2_5 b2
+
+set NbCurves 0
+
+set log [bopcurves b1 b2 -2d]
+regexp {Tolerance Reached=+([-0-9.+eE]+)\n+([-0-9.+eE]+)} ${log} full Toler NbCurves
+
+if {$NbCurves == 0} {
+ puts "Error: Intersection curve is not found"
+}
+
+set 3dviewer 1