MantisBT - Community
View Issue Details
0027075Community[OCCT] OCCT:Modeling Datapublic2016-01-13 11:532017-12-05 17:09
Roman Lygin 
ssv 
normalminor 
assignedopen 
[OCCT] 6.9.1 
[OCCT] 7.4.0* 
0027075: Geom_BSplineCurve cannot be evaluated at the end parameter
A B-Spline curve of degree 2 has a range [0,1]. It has the following boundary knots with multiplicities:

   1 : -0.0625 1
   2 : 0 2
...
  18 : 1 2
  19 : 1.0625 2
and has 34 poles. The formula number_of_poles = sum_of_mults - degree - 1 is respected.
Given that boundary knots (-0.0625 and 1.0625) are not of multiplicity degree+1, the definition range is [0,1]. However the curve cannot be evaluated at parameter 1 - the value [-1#IND0,-1#IND0] (or perhaps just uninitialized value) is returned.
On the other hand, ::Segment(0,1) works correctly by removing the boundary poles. Thus, apparently there is some issue in evaluation process.

The curve comes from an IGES file where it has been specified as periodic (i.e. in the sending CAD system it was a periodic B-Spline). This seems to be reasonable as the curve essentially is a closed/periodic one. IGES stores all B-Splines using flat knots and meeting the formula above number_of_poles = sum_of_mults - degree - 1. For periodic B-Splines it just stores a flag but the arrays of knots/multiplicities/poles are not recomputed similar to OCC conventions.
restore pcurve pc
2dcvalue pc 0 x y
dump x y #correct
2dcvalue pc 1 x y
dump x y #incorrect
No tags attached.
? pcurve (1,507) 2016-01-13 11:53
https://tracker.dev.opencascade.org/
? iges-excerpt.igs (3,362) 2016-01-13 12:54
https://tracker.dev.opencascade.org/
Issue History
2016-01-13 11:53Roman LyginNew Issue
2016-01-13 11:53Roman LyginAssigned To => msv
2016-01-13 11:53Roman LyginFile Added: pcurve
2016-01-13 12:35msvNote Added: 0049818
2016-01-13 12:35msvAssigned Tomsv => Roman Lygin
2016-01-13 12:35msvStatusnew => feedback
2016-01-13 12:54Roman LyginNote Added: 0049819
2016-01-13 12:54Roman LyginFile Added: iges-excerpt.igs
2016-01-13 12:55Roman LyginAssigned ToRoman Lygin => msv
2016-01-13 12:55Roman LyginStatusfeedback => assigned
2016-01-13 13:08msvAssigned Tomsv => ssv
2016-10-25 17:00msvTarget Version7.1.0 => 7.2.0
2017-07-20 15:30msvTarget Version7.2.0 => 7.3.0
2017-12-05 17:09msvTarget Version7.3.0 => 7.4.0*

Notes
(0049818)
msv   
2016-01-13 12:35   
Dear Roman,

You wrote:
"IGES stores all B-Splines using flat knots and meeting the formula above number_of_poles = sum_of_mults - degree - 1. For periodic B-Splines it just stores a flag but the arrays of knots/multiplicities/poles are not recomputed similar to OCC conventions."

Do you mean OCC IGES reader does this? Or IGES file already contains such definition?

Could you attach the IGES file here?
(0049819)
Roman Lygin   
2016-01-13 12:54   
Dear Mikhail,
This is per IGES specification itself.
The excerpt from the original file is enclosed. The point however is that the 'pcurve' corresponds to a real data that may come from outside or can be created in OCC. The issue is not about the OCC IGES reader.