mirror of
https://git.dev.opencascade.org/repos/occt.git
synced 2025-08-14 13:30:48 +03:00
0027722: Data Exchange - STEP error for Ellipse revol shape
Add support for calculating singularity for an incorrect revolution
This commit is contained in:
@@ -256,6 +256,28 @@ void ShapeAnalysis_Surface::ComputeSingularities()
|
|||||||
myPreci[3] = Max(Corner2.Distance(Corner4), Max(myP3d[3].Distance(Corner2), myP3d[3].Distance(Corner4)));
|
myPreci[3] = Max(Corner2.Distance(Corner4), Max(myP3d[3].Distance(Corner2), myP3d[3].Distance(Corner4)));
|
||||||
|
|
||||||
myNbDeg = 4;
|
myNbDeg = 4;
|
||||||
|
|
||||||
|
// sphere is a result of revolution ( degenerate revolution )
|
||||||
|
if (Corner1.IsEqual(Corner2, Precision::Confusion()) && myP3d[0].IsEqual(myP3d[1], Precision::Confusion()) &&
|
||||||
|
Corner2.IsEqual(Corner3, Precision::Confusion()) && myP3d[1].IsEqual(myP3d[2], Precision::Confusion()) &&
|
||||||
|
Corner3.IsEqual(Corner4, Precision::Confusion()) && myP3d[2].IsEqual(myP3d[3], Precision::Confusion()) &&
|
||||||
|
mySurf->IsKind(STANDARD_TYPE(Geom_SurfaceOfRevolution)))
|
||||||
|
{
|
||||||
|
|
||||||
|
|
||||||
|
myPreci[0] = myPreci[1] = 0;
|
||||||
|
myP3d[0] = mySurf->Value(su1, 0.25 * (sv2 + su1));
|
||||||
|
myFirstP2d[0].SetCoord(su1, sv2);
|
||||||
|
myLastP2d[0].SetCoord(su2, sv2);
|
||||||
|
myP3d[1] = mySurf->Value(su2, 0.75 * (sv1 + su2));
|
||||||
|
myFirstP2d[1].SetCoord(su2, sv1);
|
||||||
|
myLastP2d[1].SetCoord(su1, sv1);
|
||||||
|
myFirstPar[0] = myFirstPar[1] = su1;
|
||||||
|
myLastPar[0] = myLastPar[1] = su2;
|
||||||
|
myUIsoDeg[0] = myUIsoDeg[1] = Standard_False;
|
||||||
|
|
||||||
|
myNbDeg = 2;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
SortSingularities();
|
SortSingularities();
|
||||||
}
|
}
|
||||||
|
32
tests/bugs/step/bug27722
Normal file
32
tests/bugs/step/bug27722
Normal file
@@ -0,0 +1,32 @@
|
|||||||
|
puts "==================================================="
|
||||||
|
puts "0027722: Data Exchange - STEP error for Ellipse revol shape"
|
||||||
|
puts "==================================================="
|
||||||
|
puts ""
|
||||||
|
|
||||||
|
vinit
|
||||||
|
|
||||||
|
ellipse ge 0 0 20 10
|
||||||
|
|
||||||
|
mkedge te ge 0 pi/2.0
|
||||||
|
|
||||||
|
revol re te 0 0 0 0 1 0 360
|
||||||
|
|
||||||
|
vdisplay te re
|
||||||
|
|
||||||
|
vtrihedron vt
|
||||||
|
|
||||||
|
# save to STEP in mode: As Is.
|
||||||
|
stepwrite a re ${imagedir}/orig.stp
|
||||||
|
|
||||||
|
# read STEP
|
||||||
|
stepread ${imagedir}/orig.stp sr *
|
||||||
|
|
||||||
|
ttranslate sr_1 50 0 0
|
||||||
|
|
||||||
|
vdisplay sr_1
|
||||||
|
checkshape sr_1
|
||||||
|
|
||||||
|
axo
|
||||||
|
fit
|
||||||
|
checkview -screenshot -2d -path ${imagedir}/${test_image}.png
|
||||||
|
|
Reference in New Issue
Block a user