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

0025858: Incorrect result of open offset on single edge based on BSpline curve

Test cases for issue CR25858
This commit is contained in:
jgv 2015-03-05 14:59:21 +03:00 committed by bugmaster
parent 9bf3177ff6
commit ef237d732d
3 changed files with 81 additions and 4 deletions

View File

@ -233,7 +233,6 @@ static Standard_Boolean KPartCircle
BRepFill_IndexedDataMapOfOrientedShapeListOfShape& myMap,
Standard_Boolean& myIsDone)
{
// The only contour which is a closed circle
TopExp_Explorer exp(mySpine,TopAbs_EDGE);
Standard_Integer NbEdges = 0;
TopoDS_Edge E;
@ -263,13 +262,15 @@ static Standard_Boolean KPartCircle
Handle(Geom2d_Curve) OC;
if (AHC->GetType() == GeomAbs_Line)
{
if (E.Orientation() == TopAbs_REVERSED) anOffset *= -1;
if (E.Orientation() == TopAbs_REVERSED)
anOffset *= -1;
Adaptor3d_OffsetCurve Off(AHC,anOffset);
OC = new Geom2d_Line(Off.Line());
}
else if (AHC->GetType() == GeomAbs_Circle)
{
if (E.Orientation() == TopAbs_FORWARD) anOffset *= -1;
if (E.Orientation() == TopAbs_FORWARD)
anOffset *= -1;
gp_Circ2d theCirc = AHC->Circle();
if (anOffset > 0. || Abs(anOffset) < theCirc.Radius())
OC = new Geom2d_Circle (theCirc.Position(), theCirc.Radius() + anOffset);
@ -281,7 +282,8 @@ static Standard_Boolean KPartCircle
}
else
{
if (E.Orientation() == TopAbs_REVERSED) anOffset *= -1;
if (E.Orientation() == TopAbs_FORWARD)
anOffset *= -1;
Handle(Geom2d_TrimmedCurve) G2dT = new Geom2d_TrimmedCurve(aPCurve, f, l);
OC = new Geom2d_OffsetCurve( G2dT, anOffset);
}

View File

@ -0,0 +1,37 @@
puts "========"
puts "OCC25858"
puts "========"
puts ""
##########################################################################################################
# Incorrect result of open offset on single edge based on BSpline curve
##########################################################################################################
restore [locate_data_file bug25858_hf2d.brep] ff
explode ff
smallview
donly ff_1
fit
display ff
openoffset res ff 1 0.1
renamevar res_1 result
set length 0.879164
set nbshapes_expected "
Number of shapes in shape
VERTEX : 2
EDGE : 1
WIRE : 1
FACE : 0
SHELL : 0
SOLID : 0
COMPSOLID : 0
COMPOUND : 0
SHAPE : 4
"
checknbshapes result ${nbshapes_expected} 1 "Result of open offset on single edge based on BSpline curve"
set only_screen_axo 1

View File

@ -0,0 +1,38 @@
puts "========"
puts "OCC25858"
puts "========"
puts ""
##########################################################################################################
# Incorrect result of open offset on single edge based on BSpline curve
##########################################################################################################
restore [locate_data_file bug25858_hf2d.brep] ff
invert ff
explode ff
smallview
donly ff_1
fit
display ff
openoffset res ff 1 0.1
renamevar res_1 result
set length 0.879164
set nbshapes_expected "
Number of shapes in shape
VERTEX : 2
EDGE : 1
WIRE : 1
FACE : 0
SHELL : 0
SOLID : 0
COMPSOLID : 0
COMPOUND : 0
SHAPE : 4
"
checknbshapes result ${nbshapes_expected} 1 "Result of open offset on single edge based on BSpline curve"
set only_screen_axo 1