Performance issues with BRepBuilderAPI_NurbsConvert

We have an application that requires the usage of Geom_BSplineSurfaces. Sometimes when we read an IGES file, the TopoDS_Face automatically gives a Geom_BSplineSurface when we call BRep_Tool::Surface on it. However, other times it does not, and we must call BRepBuilderAPI_NurbsConvert on the face in question first. We've found that in some cases this causes our application to stall out, as NurbsConvert can take many minutes on an individual surface. Is there any reason the IGES loader's returned faces don't always convert to Geom_BSplineSurface automatically, and is there any way to get them to do so reliably? Barring this, are there any performance tricks to using NurbsConvert? I can deal with some surfaces taking awhile, but in some cases it can last for >10 minutes on one surface.

I've attached a sample file that displays the problems we have.

Sam Shrum's picture

I found why some surfaces are Geom_BSplineSurfaces and others are not: this page ( ) details which entities become which surfaces.