View Issue Details
ID | Project | Category | View Status | Date Submitted | Last Update |
---|---|---|---|---|---|
0029345 | Community | OCCT:Data Exchange | public | 2017-11-27 14:20 | 2017-11-27 14:20 |
Reporter | ventu | Assigned To | |||
Priority | normal | Severity | major | ||
Status | new | Resolution | open | ||
Platform | Any | ||||
Product Version | 7.1.0 | ||||
Summary | 0029345: Missing surfaces when importing STeP file due to wrong NURBS curve continuity detection | ||||
Description | The attached file is missing two surfaces when imported. In both cases they are offset of swept surfaces arising from a NURBS curve. | ||||
Additional information and documentation updates | What happens is that: _ curve #27427 (more or less an ellipse) has degree 3 and the following knot vector: [0,0,0,0,.5,.5,.5,1,1,1,1]; _ altough such a know vector might indicate a C0 curve, geometry is such that this curve is smooth; _ however, during construction, Geom_BSplineCurve::UpdateKnots only checks for know multiplicity and marks the curve as GeomAbs_C0; _ Geom_SurfaceOfLinearExtrusion::Geom_SurfaceOfLinearExtrusion just copies the "smooth" value of the curve, so the swept surface (#9827) is also marked as GeomAbs_C0; _ for #873, StepToGeom::MakeSurface checks if the surface that must be offset is marked GeomAbs_C0 and, in such case, converts the surface to a face and calls ShapeAlgo::AlgoContainer()->C0ShapeToC1Shape; _ however, ShapeUpgrade_FaceDivide::SplitSurface will refuse to work on a surface which is infinite in any direction (and the swept surface is infinite in V). The real solution might probably be to check geometry during the Geom_BSplineCurve construction, understand its not C0 and don't mark it as such. I don't know if this would have any side-effect, though Maybe it's also possible to treat infinite surfaces in ShapeUpgrade_FaceDivide::SplitSurface (possibly dealing only with the other direction?). Perhaps refactoring the curve in advance might also help? | ||||
Tags | No tags attached. | ||||
Test case number | |||||