1
0
mirror of https://git.dev.opencascade.org/repos/occt.git synced 2025-08-09 13:22:24 +03:00

0024470: Wrong result done by General Fuse algorithm.

Modifications:
1. The validity of the intersection point between edge and face is checked with sum of the tolerance values of the edge and face.
2. The intersection between toroidal surface and one of the following surfaces: Plane, Cylinder, Sphere, Cone or Torus
   is treated as analytical in the following cases:
   1) Torus and Plane: a. Axes of the surfaces are parallel;
                       b. Axes of the surfaces are perpendicular and location of the torus is lying on the plane;
   2) Torus and Sphere: The location of the sphere is lying on the line made from toruses axis;
   3) Torus and Cone, Cylinder or Torus: The axis of the surfaces are collinear.
   In all cases the intersection line(s) is(are) circle(s).

Added test cases bugs/modalg_5/bug24470

The intersection between torus with minor radius more than (or equal to) the major radius and any other surface is considered as parametric.
This commit is contained in:
emv
2014-01-09 12:01:01 +04:00
committed by bugmaster
parent 547702a15d
commit 7eed5d29a9
21 changed files with 2489 additions and 1360 deletions

View File

@@ -328,14 +328,11 @@
break;
//
case TopAbs_EDGE: {
Standard_Boolean bHasSameBounds;
Standard_Integer aNbComPrt2;
//
aNbComPrt2=aCPart.Ranges2().Length();
if (aNbComPrt2>1){
if (aNbCPrts > 1) {
break;
}
//// <-LXBR
//
Standard_Boolean bHasSameBounds;
bHasSameBounds=aPB1->HasSameBounds(aPB2);
if (!bHasSameBounds) {
break;

View File

@@ -231,7 +231,7 @@
}
//
const gp_Pnt& aPnew = BRep_Tool::Pnt(aVnew);
if (!myContext->IsValidPointForFace(aPnew, aF, aTolE)) {
if (!myContext->IsValidPointForFace(aPnew, aF, aTolE+aTolF)) {
continue;
}
//