|Description||Test de step_3 F1 produces (internally handled) exceptions of two kinds:|
1. On loopback (reading back written STEP file): 15 exceptions on translation of B-Spline curves, raised in constructor of Geom_BsplineCurve (see function CheckCurveData in Geom_BsplineCurve.cxx). This produces messages like this in translation log:
StepToTopoDS, GeometricSet, elem 3126 of 7121: exception
The immediate cause seems to be that B-Spline with degree 3 has multiplicities of all knots 4, while only 3 is allowed.
Two corrections seem necessary:
a) Investigate and eliminate reason of producing bad B-Spline data (most likely on writing). The situation similar to 0025971 is suspected.
b) Revise the code that handles this and similar exceptions to ensure that error messages are not output to console as it is now (unless macro OCCT_DEBUG is defined), but recorded in translation statistics (tpstat).
2. Exception in BRepLib_MakeEdge, due to error status set in method Init():
myError = BRepLib_DifferentPointsOnClosedCurve;
The reason is that check for edge closure is done twice (by comparing its points taken from curve): in this method Init(), and in top-level method Init() that calls this one. Though the same points are taken from the curve, and the same tolerance is used for comparison, the results are different due to numeric instability, and the test passes in one place but not in the other (difference is very close to precision used, 1e-7; greater on one test and less on the other). Note that tests are not consistent: one uses < and the other <=, however this is not the reason of error.
Two changes are necessary:
a) Revise implementation of BRepLib_MakeEdge to have test done only once.
b) Correct spelling of error messages: "exeption" -> "exception"
The problem has been detected while checking regressions on branch CR0-OCCT691-3, built with VC++ 10, 64-bit mode (both Debug and Release). Problem 2 cannot be reproduced neither in OCCT master (7.0.0.dev) nor on previous versions (up to 6.9.0).