1
0
mirror of https://git.dev.opencascade.org/repos/occt.git synced 2025-04-03 17:56:21 +03:00

0033028: Standard_ConstructionError while using ShapeUpgrade_UnifySameDomain

Additional check if the sequence of circular edges is a closed chain.
This commit is contained in:
azv 2022-06-27 09:57:42 +03:00 committed by smoskvin
parent 6bf38f219b
commit 581016faeb
2 changed files with 51 additions and 1 deletions

View File

@ -2058,8 +2058,22 @@ Standard_Boolean ShapeUpgrade_UnifySameDomain::MergeSubSeq(const TopTools_Sequen
TopoDS_Vertex V[2];
V[0] = sae.FirstVertex(FE);
V[1] = sae.LastVertex(TopoDS::Edge(theChain.Last()));
Standard_Boolean isClosed = V[0].IsSame(V[1]);
if (!isClosed)
{
// additionally check the points for equality to make a final decision about closedness of the result curve
gp_Pnt aP0 = BRep_Tool::Pnt(V[0]);
gp_Pnt aP1 = BRep_Tool::Pnt(V[1]);
Standard_Real aTol = Max(BRep_Tool::Tolerance(V[0]), BRep_Tool::Tolerance(V[1]));
if (aP0.SquareDistance(aP1) < aTol * aTol)
{
isClosed = Standard_True;
V[1] = V[0];
V[1].Reverse();
}
}
TopoDS_Edge E;
if (V[0].IsSame(V[1])) {
if (isClosed) {
// closed chain
BRepAdaptor_Curve adef(FE);
Handle(Geom_Circle) Cir1;

36
tests/bugs/heal/bug33028 Normal file
View File

@ -0,0 +1,36 @@
puts "========================"
puts " OCC33028: Standard_ConstructionError while using ShapeUpgrade_UnifySameDomain"
puts "========================"
puts ""
stepread [locate_data_file bug33028_kalip.stp] s *
set nbsBefore "
Number of shapes in shape
VERTEX : 543
EDGE : 819
WIRE : 359
FACE : 289
SHELL : 2
SOLID : 2
COMPSOLID : 0
COMPOUND : 1
SHAPE : 2015
"
checknbshapes s_1 -ref ${nbsBefore} -t -m "result before attempt to simplify the model"
unifysamedom result s_1
set nbsAfter "
Number of shapes in shape
VERTEX : 515
EDGE : 805
WIRE : 359
FACE : 289
SHELL : 2
SOLID : 2
COMPSOLID : 0
COMPOUND : 1
SHAPE : 1973
"
checknbshapes result -ref ${nbsAfter} -t -m "result after attempt to simplify the model"