IGES/STEP import problems

We want to replace our home-grown modeler with a third-party modeler. We are considering the OpenCascade modeler.

Before we can incorporate OpenCascade into our product, we need to test the robustness of OpenCascade's IGES and STEP import. To do this, we're using the MFC Visual C++ viewer application provided in OpenCascade 3.0. Several IGES and STEP files that we have no problem importing into other applications are causing unhandled exception errors in OpenCascade. The units are explicitely defined in the IGES files so I don't think that's the problem.

We'd like to use OpenCascade in our product but if it can't robustly import IGES and STEP files, we'll have to look for another modeler. What's the best way to resolve these import problems?

Here's a list of some of the functions where the unhandled exception errors are occurring on IGES import: 1. Geom2dAdaptor_Curve::Load(). The call to C->DynamicType() is failing apparently becuase C has some invalid member variable pointers. 2. IGESBasic_Group::Init(). The call to allEntities->Lower() is failing because allEntities has some invalid member variables pointers. 3. Geom_SweptSurface::BasisCurve() 4. Geom2dAdaptor_Curve::NbIntervals() 5. Function QuasiFleche() appears to be in an infinite loop. It finally crashes in PLib::EvalPolynomial() at the statement switch(Dimension) after the application has eaten up about 500MB of virtual memory! (IGES file is only 2.7MB in size.) (and many more, too many to list)

Here's a list of some of the functions where the unhandled exception errors are occurring on STEP import: 1. gp_Lin2d Geom2d_Line::Lin2d() const. Member variable pos seems to be invalid. 2. TCollection_BaseSequence::Length(). Member variable Size cannot be evaluated. 3. TCollection_Array1::TCollection_Array1(const Standard_Integer, const Standard_Integer). Failing on statement p=new Array1Item[Up-Low+1]; Up is -5 and Low is 1 making Up-Low+1=-5 which causes an invalid allocation size. 4. Geom_SweptSurface::BasisCurve(). Member variable basisCurve is invalid. (and many more, too many to list)

Christian CAILLET's picture

Regarding the problems you meet, until now we didn't see them as described. However, this can correspond to a non-yet met case or configuration.

So, to give more comprehensive answer, I'd like to see myself how these files behave.