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

0031460: Modeling Algorithms - Regression: Revolution not done.

BRepPrimAPI_MakeRevol.cxx: check of intersection of edge with rotation axis is improved.
Test case added
This commit is contained in:
ifv 2020-03-24 10:23:46 +03:00 committed by bugmaster
parent 68064d7bc3
commit 517ba7aa70
2 changed files with 49 additions and 1 deletions

View File

@ -252,7 +252,21 @@ void BRepPrimAPI_MakeRevol::Build()
static Standard_Boolean IsIntersect(const Handle(Adaptor3d_HCurve)& theC,
const gp_Ax1& theAxe)
{
const Handle(Geom_Line) aL = new Geom_Line(theAxe);
const gp_Lin anAxis(theAxe);
//Quick test for circle
if (theC->GetType() == GeomAbs_Circle)
{
gp_Circ aCirc = theC->Circle();
const gp_Pnt& aCentr = aCirc.Location();
Standard_Real anR2 = aCirc.Radius();
anR2 -= Precision::Confusion();
anR2 *= anR2;
if (anAxis.SquareDistance(aCentr) > anR2)
{
return Standard_False;
}
}
const Handle(Geom_Line) aL = new Geom_Line(anAxis);
const GeomAdaptor_Curve aLin(aL);
const Standard_Real aParTol = theC->Resolution(Precision::Confusion());
const Standard_Real aParF = theC->FirstParameter() + aParTol,

View File

@ -0,0 +1,34 @@
puts "========"
puts "0031460: Modeling Algorithms - Regression: Revolution not done."
puts "========"
puts ""
circle cir 3 2.9999999999989 0 0 0 -1 -1 0 0 3
trim cir cir 4.71238898038469 6.28318530717959
mkedge e cir
## sector
revol r10 e 0 0 0 1 0 0 10 1
if { [isdraw r10] == 1 } {
if { [regexp "valid" [checkshape r10]] && [regexp "OK" [bopcheck r10 4]]} {
puts "OK: valid shape is created"
} else {
puts "Error: algorithm created wrong shape"
}
} else {
puts "Error: algorithm did not create shape"
}
## full revol
revol r360 e 0 0 0 1 0 0 360 1
if { [isdraw r360] == 1 } {
if { [regexp "valid" [checkshape r360]] && [regexp "OK" [bopcheck r360 4]]} {
puts "OK: valid shape is created"
} else {
puts "Error: algorithm created wrong shape"
}
} else {
puts "Error: algorithm did not create shape"
}