Importation de fichier IGES (*.IGS) de FreeShip vers OpenCASCADE

Le logiciel FreeShip est un outil pratique pour la conception de coques.
Les capacités de FreeShip sont essentiellement limitées à la conception de l'extérieur de la coque. Pour tout le reste, un véritable système de CAO est nécessaire. Il existe une fonction d'exportation IGES pour le transfert.
Il existe également un successeur : DelftShip. La fonction d'exportation IGES a été supprimée de la version gratuite de DelftShip et n'est disponible que dans la version commerciale. Celle-ci ne m'est pas accessible, je ne peux donc pas la tester.
Je voudrais utiliser la géométrie de notre outil ISCAD. Il est basé sur OpenCASCADE.
La géométrie de la coque modélisée dans FreeShip 2.6 ressemble à ceci :
L'exportation vers un fichier IGES n'a rien de spectaculaire et 40 faces individuelles sont créées.
La prochaine étape est l'importation dans OpenCASCADE. Mais il y a un problème ici. OpenCASCADE (v7.2.0) signale:

Rapport : 40 entités inconnues.

Nombre total d'entités chargées 41.

Rien ne s'affiche. Bien qu'il soit rapporté qu'une importation fonctionne avec les versions antérieures.https://forum.freecadweb.org/viewtopic.php?t=1670), l'importation ne fonctionne pas avec la version actuelle de l'OCC, ni avec différentes anciennes versions de Salome (et OpenCASCADE). Par contre, l'importation fonctionne par exemple dans le logiciel de CAO commercial Creo.

Enfin, une étude montre que le fichier exporté par FreeShip ne contient que des entités de type 128 (surface spline). De plus, il n'y a qu'une seule définition de couleur au début. À la fin du bloc de paramètres d'une surface 128 (voir par exemple. https://wiki.eclipse.org/IGES_file_Specification#Rational_B-Spline_Surface_.28Type_128.29) sont les paramètres de début et de fin (valeurs minimales/maximales U et V) de la surface. Ces entrées sont omises par FreeShip et constituent une erreur pour OpenCASCADE.

Une solution de contournement consiste à patcher l'importation IGES d'OpenCASCADE. Le code correspondant se trouve à partir de la ligne 188 dans le fichier IGESGeom/IGESGeom_ToolBSplineSurface.cxx. J'ai supprimé le message d'erreur et inséré des limites de paramètres par défaut :

  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;
  }

Avec ces modifications, l'importation fonctionne :