MantisBT - Open CASCADE
View Issue Details
0026597Open CASCADE[OCCT] OCCT:Data Exchangepublic2015-08-25 10:042020-12-02 15:14
abv 
dpasukhi 
normalminor 
newopen 
[OCCT] 6.9.1 
[OCCT] 7.6.0* 
de step_3 F1
0026597: Data Exchange - Internal exceptions in test de step_3 F1
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).
Run test de step_3 F1 under debugger with exception handling enabled
No tags attached.
Issue History
2015-08-25 10:04abvNew Issue
2015-08-25 10:04abvAssigned To => gka
2016-10-26 12:05gkaTarget Version7.1.0 => 7.2.0
2017-07-27 09:33abvTarget Version7.2.0 => 7.4.0
2017-08-10 19:34mkvTest case number => de step_3 F1
2017-08-10 19:34mkvNote Added: 0069295
2019-09-04 13:04abvTarget Version7.4.0 => 7.5.0
2020-10-02 21:42abvTarget Version7.5.0 => 7.6.0*
2020-11-23 21:12gkaAssigned Togka => dpasukhi
2020-12-02 15:14kgvProduct Version => 6.9.1
2020-12-02 15:14kgvSummaryInternal exceptions in test de step_3 F1 => Data Exchange - Internal exceptions in test de step_3 F1

Notes
(0069295)
mkv   
2017-08-10 19:34   
Problem described in issue is reproduced on current state of OCCT.