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

0025491: BRepOffsetAPI_MakeOffset algorithm crashes on customer's shape and big value of offset

Test case for CR25491

Correction of test case for issue CR25491
This commit is contained in:
jgv
2014-11-21 15:22:22 +03:00
committed by bugmaster
parent 34e923b5c2
commit a791eb69f4
3 changed files with 47 additions and 32 deletions

View File

@@ -1253,29 +1253,6 @@ void BRepFill_OffsetWire::UpdateDetromp (BRepFill_DataMapOfOrientedShapeListOfSh
const Standard_Boolean EOnE,
const BRepFill_TrimEdgeTool& Trim) const
{
if (myJoinType == GeomAbs_Intersection &&
Vertices.Length() == 1 &&
!EOnE)
{
TopTools_IndexedMapOfShape Vmap1, Vmap2;
TopExp::MapShapes(Shape1, TopAbs_VERTEX, Vmap1);
TopExp::MapShapes(Shape2, TopAbs_VERTEX, Vmap2);
Standard_Boolean Adjacent = Standard_False;
for (Standard_Integer i = 1; i <= Vmap1.Extent(); i++)
for (Standard_Integer j = 1; j <= Vmap2.Extent(); j++)
if (Vmap1(i).IsSame(Vmap2(j)))
{
Adjacent = Standard_True;
break;
}
if (Adjacent)
{
Detromp(Shape1).Append(Vertices.First());
Detromp(Shape2).Append(Vertices.First());
return;
}
}
Standard_Integer ii = 1;
Standard_Real U1,U2;
TopoDS_Vertex V1,V2;
@@ -1294,8 +1271,11 @@ void BRepFill_OffsetWire::UpdateDetromp (BRepFill_DataMapOfOrientedShapeListOfSh
U2 = Params.Value(ii).X();
V2 = TopoDS::Vertex(Vertices.Value(ii));
gp_Pnt2d P = Bis->Value((U2 + U1)*0.5);
if (!Trim.IsInside(P)) {
gp_Pnt2d P = Bis->Value((U2 + U1)*0.5);
Standard_Boolean IsP_inside = Standard_True;
if (myJoinType == GeomAbs_Arc)
IsP_inside = Trim.IsInside(P);
if (!IsP_inside) {
if (!V1.IsNull()) {
Detromp(Shape1).Append(V1);
Detromp(Shape2).Append(V1);
@@ -1313,7 +1293,10 @@ void BRepFill_OffsetWire::UpdateDetromp (BRepFill_DataMapOfOrientedShapeListOfSh
if (!EOnE) {
if (!Precision::IsInfinite(U2)) {
gp_Pnt2d P = Bis->Value((U2 + U1)*0.5);
if (!Trim.IsInside(P)) {
Standard_Boolean IsP_inside = Standard_False;
if (myJoinType == GeomAbs_Arc)
IsP_inside = Trim.IsInside(P);
if (!IsP_inside) {
if (!V1.IsNull()) {
Detromp(Shape1).Append(V1);
Detromp(Shape2).Append(V1);