DiscussionsIssue archiveOCCT:Data Exchange

Archived issue #0023622

IGES import produces invalid shape with parameter read.iges.bspline.continuity=0

CommunityOCCT:Data Exchangeclosed3 public notes

Search issues

Description

When read.iges.bspline.continuity set to 0 (with Interface_Static::SetCVal()), the BSplineSurface is not enforced to become periodic if it is closed what is done when it's set to 1. In some cases (e.g. seatmotor2.igs, entity 397) this leads to wrong resulting shape after Shape Healing. Instead of added missing seam the face is split into a compound of 2 invalid faces.

Steps to reproduce

igesbrep seatmotor.igs s1
select 3, then 397
# visually OK
numshapes s1_397 #0000001 face
tolerance s1_s397 #about 0.015

param read.iges.bspline.continuity 0
igesbrep . s0
select 3, then 397
# visually wrong (no pcurves)
numshapes s0_397 #0000002 faces
tolerance s0_s397 #about 13.8

Public activity

3 archived notes

Participants are labeled by their role within this record.

01Author
Pushed into git repository as branch CR23622.

Note also that the legacy code in IGESToBRep_BasicSurface::TransferBSplineSurface
(const Handle(IGESGeom_BSplineSurface)&) right below the fix only applies to icont==2 (due to wrong if-else clauses). This is a long dated bug not addressed as part of this CR.
IGESToBRep_BasicCurve works both for icont==1 and 2 cases, so the fix for surface would be similar:
IGESConvGeom::IncreaseSurfaceContinuity (res, GetEpsGeom(), GetContinuity());

Consider addressing as part of another CR, if you deem appropriate.
02Commenter 2
Branch CR23622 is ready to be tested
03Commenter 3
Dear Commenter 1,

Branch CR23622 (and products from GIT master) was compiled on Linux and
Windows platforms and tested.

Regressions:
Not detected

Improvements:
Not detected

Testing cases:
bugs iges(003) bug23622_1, bug23622_2 - OK.