FreeShip软件是设计船体的一个方便的工具。.
FreeShip的功能基本上仅限于船体的外部设计。对于其他所有方面,则需要一个真正的CAD系统。它有一个IGES导出功能用于传输。.
还有一个后续版本:DelftShip。DelftShip 的免费版本已删除 IGES 导出功能,该功能仅在商业版本中可用。我没有此版本,因此无法对其进行测试。.
我想在我司的工具 ISCAD 中使用几何体。它基于 OpenCASCADE。.
FreeShip 2.6 中建模的船体几何形状如下所示:
导出到 IGES 文件并不令人惊奇,并且创建了 40 个单独的面。.
下一步是导入OpenCASCADE。但这里有一个问题。OpenCASCADE (v7.2.0) 报告:
报告:40个未知实体。.
已加载实体总数 41。.
没有任何显示。尽管有报道称较早的版本可以导入(https://forum.freecadweb.org/viewtopic.php?t=1670),该导入在当前 OCC 版本以及不同旧版本的 Salome(和 OpenCASCADE)中均无法正常工作。另一方面,该导入在商业 CAD 软件 Creo 等中可以正常工作。.
最后,一项研究表明 FreeShip 导出的文件仅包含类型为 128(样条曲面)的实体。此外,文件开头有一个颜色定义。在 128 曲面的参数块的末尾(参见例如. https://wiki.eclipse.org/IGES_file_Specification#Rational_B-Spline_Surface_.28Type_128.29) 是曲面的起点和终点参数(U 和 V 的最小值/最大值)。这些条目会被 FreeShip 忽略,而对于 OpenCASCADE 来说,这是一个错误。.
一种解决方法是修补OpenCASCADE的IGES导入。相应的代码位于IGESGeom/IGESGeom_ToolBSplineSurface.cxx文件的第188行开始。我移除了错误消息并插入了默认参数限制:
如果 (!PR.ReadReal(PR.Current(), aUmin) || !PR.ReadReal(PR.Current(), aVmin)){
//Message_Msg Msg106("XSTEP_106");
//PR.SendFail(Msg106);
aUmin=0.0;
aVmin=0.0;
}
如果 (!PR.ReadReal(PR.Current(), aUmax) || !PR.ReadReal(PR.Current(), aVmax)){
//Message_Msg Msg107("XSTEP_107");
//PR.SendFail(Msg107);
aUmax=1.0;
aVmax=1.0;
}
有了这些修改,导入就可以正常工作了:
