mirror of
https://git.dev.opencascade.org/repos/occt.git
synced 2025-08-09 13:22:24 +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)));
|
||||
|
||||
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();
|
||||
}
|
||||
|
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