MantisBT
Mantis Bug Tracker Workflow

View Issue Details Jump to Notes ] Issue History ] Print ]
IDProjectCategoryView StatusDate SubmittedLast Update
0029745Community[OCCT] OCCT:Modeling Datapublic2018-05-08 17:552018-05-08 17:55
Reporterventu 
Assigned Tomsv 
PrioritynormalSeveritycrash 
StatusnewResolutionopen 
PlatformOSOS Version
Product Version[OCCT] 7.2.0 
Target VersionFixed in Version 
Summary0029745: GeomAdaptor_Surface::VIntervals fails on periodic surfaces
DescriptionSuppose:
_ we have a V periodic NURBS Surface;
_ we have a GeomAdaptor_Surface with V limits outside of the period;
_ the surface has discontinuities;
_ we call GeomAdaptor_Surface::VIntervals to get a list of continuous subintervals.

That method will build an U iso-curve and get such intervals on that; at the end, however, that intervals are bounded with:
  T(T.Lower()) = myVFirst;
  T(T.Lower() + myNbVIntervals) = myVLast;

The problem arises since the value returned by the curve Intervals(...) method will be within the period, so those values will be invalid.


Example:
_ surface with periodic V knot vector ranging [0 ; 4];
_ surface adaptor with limits [5 ; 6].
_ Intervals(...) on the ISO curve returns [1,2,3];
_ the statements reported above will transform the result in [5,2,6].

This will lead to a crash in subsequent processing.



A solution along the line of the following might work:
  if (mySurface->IsVPeriodic())
    for (Standard_Integer i=T.Lower()+1;i<T.Lower()+myNbVIntervals;++i)
      T(i)+=myVFirst-T(T.Lower());
  T(T.Lower()) = myVFirst;
  T(T.Lower() + myNbVIntervals) = myVLast;


Notice the problem should also occur in U direction.
TagsNo tags attached.
Test case number
Attached Files

- Relationships

-  Notes
There are no notes attached to this issue.

- Issue History
Date Modified Username Field Change
2018-05-08 17:55 ventu New Issue
2018-05-08 17:55 ventu Assigned To => msv


Copyright © 2000 - 2018 MantisBT Team
Powered by Mantis Bugtracker