Anonymous | Login | 2021-01-16 06:15 MSK | ![]() |
My View | View Issues | Change Log | Roadmap |
View Issue Details [ Jump to Notes ] | [ Issue History ] [ Print ] | ||||||||||||
ID | Project | Category | View Status | Date Submitted | Last Update | ||||||||
0030148 | Community | [OCCT] OCCT:Modeling Algorithms | public | 2018-09-20 13:21 | 2018-09-21 07:41 | ||||||||
Reporter | adrien_schvalberg_technodigit | ||||||||||||
Assigned To | ifv | ||||||||||||
Priority | normal | Severity | minor | ||||||||||
Status | new | Resolution | open | ||||||||||
Platform | Windows | OS | VC++ 2015 | OS Version | 64 bit | ||||||||
Product Version | [OCCT] 7.3.0 | ||||||||||||
Target Version | Fixed in Version | ||||||||||||
Summary | 0030148: exception in BRepOffestAPI_MakePipe for some periodic BSpline spines | ||||||||||||
Description | if you execute BRepOffsetAPI_MakePipe(Spine, Profile); with No_Exception and No_Standard_RangeError NOT defined, that will raise a Standard_RangeError exception. in GeomFill_SectionsPlacement.cxx, line 289 to 304 (in constructor): ... Handle(Geom_BSplineCurve) BC = Handle(Geom_BSplineCurve)::DownCast(myAdpSection.Curve()); Standard_Integer I1, I2, I3, I4; BC->LocateU( first, Precision::Confusion(), I1, I2 ); BC->LocateU( last, Precision::Confusion(), I3, I4 ); Standard_Integer NbKnots = I3 - I2 + 1; Standard_Integer NbLocalPnts = 10; Standard_Integer NbPnts = (NbKnots-1) * NbLocalPnts; if (I1 != I2) NbPnts += NbLocalPnts; if (I3 != I4 && first < BC->Knot(I3)) NbPnts += NbLocalPnts; if (!myAdpSection.IsClosed()) NbPnts++; Pnts = new TColgp_HArray1OfPnt(1, NbPnts); ... the construction of the point array raises an exception because NbPnts == 0 here. And this number is 0 because BC->LocateU on the last parameter wrongly reports I3 = I4 = 1 (instead of 5 with my sample files). The range of the (periodic) Geom_BSplineCurve is [0, 2071.7994540550058]. The range of the Geom_TrimmedCurve used by the myAdpSection adaptor is [0, 2071.7994540550098]. The LocateU applies the PeriodicNormalization on the last parameter BEFORE testing for tolerance so the real tested parameter is 4.0927261579781771e-12 which report 1. | ||||||||||||
Steps To Reproduce | in Draw with No_Exception and No_Standard_RangeError NOT defined! pload MODELING restore pipe_profile.brep profile restore pipe_spine.brep spine pipe pipe spine profile | ||||||||||||
Tags | No tags attached. | ||||||||||||
Test case number | |||||||||||||
Attached Files | ![]() ![]() | ||||||||||||
![]() |
|
(0079279) adrien_schvalberg_technodigit (reporter) 2018-09-20 13:45 |
to be more precise, even if No_Exception or No_Standard_RangeError is defined, the point array will be empty and then in GeomLib::Inertia (GeomLib.cxx line 1864) you will have a division by 0. It can crash here also if you have floating point exceptions enabled. |
(0079302) emv (developer) 2018-09-21 07:41 |
Dear Igor, please have a look at the problem when have time. |
![]() |
|||
Date Modified | Username | Field | Change |
2018-09-20 13:21 | adrien_schvalberg_technodigit | New Issue | |
2018-09-20 13:21 | adrien_schvalberg_technodigit | Assigned To | => msv |
2018-09-20 13:21 | adrien_schvalberg_technodigit | File Added: pipe_spine.brep | |
2018-09-20 13:21 | adrien_schvalberg_technodigit | File Added: pipe_profile.brep | |
2018-09-20 13:45 | adrien_schvalberg_technodigit | Note Added: 0079279 | |
2018-09-21 07:41 | emv | Assigned To | msv => ifv |
2018-09-21 07:41 | emv | Note Added: 0079302 |
Copyright © 2000 - 2021 MantisBT Team |