const TopoDS_Edge& aE1,
const TopoDS_Edge& aE2)
{
- Standard_Real aDist, aD, aT11, aT12, aT21, aT22, aTol2d;
+ Standard_Real aDist, aD, aT11, aT12, aT21, aT22, aTol2d, aT1, aT2;
Standard_Integer j, aNbPnt;
Geom2dInt_GInter aInter;
gp_Pnt aP;
if (aNbPnt) {
aDist = -Precision::Infinite();
for (j = 1; j <= aNbPnt; ++j) {
- aP2D = aInter.Point(j).Value();
+ const IntRes2d_IntersectionPoint& aPoint = aInter.Point(j);
+ //
+ aT1 = aPoint.ParamOnFirst();
+ aT2 = aPoint.ParamOnSecond();
+ //
+ if ((aT1 < aT11 || aT1 > aT12) ||
+ (aT2 < aT21 || aT2 > aT22)) {
+ continue;
+ }
+ //
+ aP2D = aPoint.Value();
aS->D0(aP2D.X(), aP2D.Y(), aP);
aD=aPV.SquareDistance(aP);
if (aD > aDist) {
--- /dev/null
+puts "============"
+puts "OCC26098"
+puts "============"
+puts ""
+###############################
+## The result of General Fuse operation is self-interfered shape
+###############################
+
+restore [locate_data_file bug26098_c.brep ] c
+
+explode c
+
+bclearobjects
+bcleartools
+baddobjects c_1
+baddtools c_2 c_3 c_4 c_5
+
+bfillds
+bbuild result
+
+set info [bopcheck result]
+
+if { [regexp "This shape seems to be OK" ${info}] != 1 } {
+ puts "Error : The result of General Fuse operation is self-interfered shape"
+}
+
+set square 173.444
+
+set nbshapes_expected "
+Number of shapes in shape
+ VERTEX : 230
+ EDGE : 400
+ WIRE : 196
+ FACE : 185
+ SHELL : 20
+ SOLID : 20
+ COMPSOLID : 0
+ COMPOUND : 1
+ SHAPE : 1052
+"
+
+checknbshapes result -ref ${nbshapes_expected} -t -m "Result obtained by General Fuse operator"
+
+set 3dviewer 1