Importando archivo IGES (*.IGS) de FreeShip a OpenCASCADE

El software FreeShip es una herramienta conveniente para el diseño de cascos.
Las capacidades de FreeShip se limitan esencialmente al diseño del exterior del casco. Para todo lo demás, se requiere un sistema CAD real. Existe una función de exportación IGES para la transferencia.
También hay un sucesor: DelftShip. La función de exportación IGES ha sido eliminada de la versión gratuita de DelftShip y solo está disponible en la versión comercial. Esta no está a mi disposición, por lo que no puedo probarla.
Me gustaría usar la geometría en nuestra herramienta ISCAD. Está basada en OpenCASCADE.
La geometría del casco modelada en FreeShip 2.6 se ve así:
La exportación a un archivo IGES es poco espectacular y se crean 40 caras individuales.
El siguiente paso es la importación a OpenCASCADE. Pero aquí hay un problema. OpenCASCADE (v7.2.0) informa:

Informe: 40 entidades desconocidas.

Número total de entidades cargadas 41.

No se muestra nada. Aunque se informa que una importación funciona con versiones anteriores.https://forum.freecadweb.org/viewtopic.php?t=1670), la importación no funciona con la versión actual de OCC, ni con diferentes versiones anteriores de Salome (y OpenCASCADE). Por otro lado, la importación funciona, por ejemplo, en el software CAD comercial Creo.

Finalmente, un estudio muestra que el archivo exportado por FreeShip contiene solo entidades de tipo 128 (superficie spline). Además, hay una única definición de color al principio. Al final del bloque de parámetros de una superficie 128 (ver p. ej. https://wiki.eclipse.org/IGES_file_Specification#Rational_B-Spline_Surface_.28Type_128.29) son los parámetros de inicio y fin (valores mínimos/máximos de U y V) de la superficie. Estas entradas son omitidas por FreeShip y para OpenCASCADE esto es un error.

Una solución alternativa es parchear la importación de IGES de OpenCASCADE. El código correspondiente se encuentra a partir de la línea 188 en el archivo IGESGeom/IGESGeom_ToolBSplineSurface.cxx. Eliminé el mensaje de error e inserté límites de parámetros por defecto:

  si (!PR.ReadReal(PR.Current(), aUmin) || !PR.ReadReal(PR.Current(), aVmin)){
    //Message_Msg Msg106("XSTEP_106");
    //PR.SendFail(Msg106);
    aUmin=0.0;
    aVmin=0.0;
  }

  si (!PR.ReadReal(PR.Current(), aUmax) || !PR.ReadReal(PR.Current(), aVmax)){
    //Message_Msg Msg107("XSTEP_107");
    //PR.SendFail(Msg107);
    aUmax=1.0;
    aVmax=1.0;
  }

Con estas modificaciones, la importación funciona: