I'm trying to use OCCT to read IGES files so I can translate them into our proprietary data format, which is BREP-based. I originally used IGESControl_Reader.TransferRoots() and .OneShape() to create an entity tree, which I parsed recursively. That works great for flat-sided objects, but it fails miserably for curved surfaces like cylinders. When reading a half-cylinder as a Face, I'm given only the four corner points. How am I supposed to know that the edges making up that wire are curved instead of straight? Is there a way to have OCCT automatically tessellate or otherwise convert the curved surfaces into flat faces for me? I tried using IGESToBRep_Reader, but the TransferRoots() call keeps segfaulting on me inside IGESToBRep_Actor::Transfer().
What's the best way for me to retrieve an accurate representation of these curved faces? I'm not afraid tessellating surfaces myself if I can somehow get the proper 3D description.
I'm having a terrible time trying to find any documentation that describes how all of the dozens of IGES classes all work together.