mirror of
https://git.dev.opencascade.org/repos/occt.git
synced 2025-04-21 10:13:43 +03:00
0033263: Modeling Algorithms - BRepFilletAPI_MakeFillet doesn't work for current parameters
Do not calculate edge state if there are more than 4 G1 connections for currect vertex.
This commit is contained in:
parent
6d140acb14
commit
86e352849d
@ -692,7 +692,6 @@ void ChFi3d_Builder::PerformExtremity (const Handle(ChFiDS_Spine)& Spine)
|
|||||||
else{
|
else{
|
||||||
sst = Spine->LastStatus();
|
sst = Spine->LastStatus();
|
||||||
iedge = Spine->NbEdges();
|
iedge = Spine->NbEdges();
|
||||||
E[0] = Spine->Edges(iedge);
|
|
||||||
V = Spine->LastVertex();
|
V = Spine->LastVertex();
|
||||||
}
|
}
|
||||||
//Before all it is checked if the tangency is not dead.
|
//Before all it is checked if the tangency is not dead.
|
||||||
@ -703,6 +702,7 @@ void ChFi3d_Builder::PerformExtremity (const Handle(ChFiDS_Spine)& Spine)
|
|||||||
}
|
}
|
||||||
|
|
||||||
if(sst == ChFiDS_BreakPoint){
|
if(sst == ChFiDS_BreakPoint){
|
||||||
|
Standard_Integer aLocNbG1Connections = 0;
|
||||||
TopTools_ListIteratorOfListOfShape It;//,Jt;
|
TopTools_ListIteratorOfListOfShape It;//,Jt;
|
||||||
Standard_Boolean sommetpourri = Standard_False;
|
Standard_Boolean sommetpourri = Standard_False;
|
||||||
TopTools_IndexedMapOfOrientedShape EdgesOfV;
|
TopTools_IndexedMapOfOrientedShape EdgesOfV;
|
||||||
@ -720,7 +720,10 @@ void ChFi3d_Builder::PerformExtremity (const Handle(ChFiDS_Spine)& Spine)
|
|||||||
if (!F2.IsNull() && ChFi3d::IsTangentFaces(anEdge, F1, F2, GeomAbs_G2)) //smooth edge
|
if (!F2.IsNull() && ChFi3d::IsTangentFaces(anEdge, F1, F2, GeomAbs_G2)) //smooth edge
|
||||||
{
|
{
|
||||||
if (!F1.IsSame(F2))
|
if (!F1.IsSame(F2))
|
||||||
|
{
|
||||||
NbG1Connections++;
|
NbG1Connections++;
|
||||||
|
aLocNbG1Connections++;
|
||||||
|
}
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -759,7 +762,7 @@ void ChFi3d_Builder::PerformExtremity (const Handle(ChFiDS_Spine)& Spine)
|
|||||||
if (EdgesOfV.Extent() != 3)
|
if (EdgesOfV.Extent() != 3)
|
||||||
sommetpourri = Standard_True;
|
sommetpourri = Standard_True;
|
||||||
|
|
||||||
if(!sommetpourri){
|
if(!sommetpourri && aLocNbG1Connections < 4){
|
||||||
sst = ChFi3d_EdgeState(E,myEFMap);
|
sst = ChFi3d_EdgeState(E,myEFMap);
|
||||||
}
|
}
|
||||||
if(ii==1)Spine->SetFirstStatus(sst);
|
if(ii==1)Spine->SetFirstStatus(sst);
|
||||||
|
18
tests/bugs/modalg_8/bug33113
Normal file
18
tests/bugs/modalg_8/bug33113
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
puts "================================"
|
||||||
|
puts "OCC33113: Modeling Algorithms - BRepFilletAPI_MakeFillet::Build SIGSEGV"
|
||||||
|
puts "================================"
|
||||||
|
|
||||||
|
restore [locate_data_file bug33113.brep] sh
|
||||||
|
|
||||||
|
explode sh e
|
||||||
|
copy sh_4 e
|
||||||
|
|
||||||
|
explode sh So
|
||||||
|
copy sh_1 s
|
||||||
|
|
||||||
|
fillet res s 0.1 e
|
||||||
|
|
||||||
|
checkshape res
|
||||||
|
|
||||||
|
checkview -display res -3d -path ${imagedir}/${test_image}.png
|
||||||
|
|
Loading…
x
Reference in New Issue
Block a user