OpenCASCADE 8.0:即将发布 & 开发者关注要点

🎈升级概况

在这里插入图片描述

2025年11月22日,OCCT 管理员在Github发布OCC8.0 升级声明,其中详细列举了开发者需要关注的要点。

OCCT 8.0 关键理念:现代化、性能良好、可靠。

OCCT 8.0 关键升级一个明显的特点就是编码风格更靠近现代C++。升级后,先前广泛使用的Handle宏、自定义类型Standard_Real, Standard_Integer、异常类型等将替换为C++标准库风格,明显减少了冗余,编码风格和C++也不会那么割裂。同时,采样 C++17 标准。

此次升级,除了引入TKHelix详见Open Cascade 8.0.0 新增模块:TKHelix 螺旋线工具)之外,还将引入一个新的建模模块,值得期待。

OCCT 开发团队进行了大量重构,清理架构,移除弃用方法,并使库与现代 C++ 标准保持一致。虽然核心逻辑保持一致——意味着应用可能需要调整而非架构重写——但这次现代化是一个战略举措。它确保 OCCT 长期保持可维护性、安全性和高效性。

🚀主要技术细节

原生 C++ 类型:弃用了自定义类型,如Standard_Real, Standard_Integer,直接使用double, int。这简化了代码并提高了编译器的兼容性;

标准数学库:正弃用 OCCT 专用一些数学封装函数,如Abs, Min, Max,直接使用STL标准库std::abs, std::min, std::max

命名空间更新:为了简化和现代化,引入短命名空间occ,代替原先的opencascade
注意:在升级过渡期间,示例代码 Sample中仍然使用命名空间opencascade

现代风格的handle<>:常用的宏函数 Handle()将不再使用,直接使用模板函数写法:occ::handle<MyClass>。记得OCCT从6.x升级到7.0时,废弃Handle_MyClass写法,并统一使用Handle(MyClass),此次进一步清理,则更靠近现代C++风格。

Handle_Geom_Curve curve = ...;       // OCC 6.x
Handdle(Geom_Curve) curve = ...;     // OCC 7.x
occ::handle<Geom_Curve> curve = ...; // OCC 8.x

现代风格的容器:逐步淘汰别名,如NCollection, TColStd_SequenceOfReal,鼓励直接使用模板类,如occ::Seq<double>, NCollection_Sequence<double>;

新别名:在命名空间中引入短别名,如NCollection_Sequence<T>替换为occ::Seq<T>

标准属性:用标准 C++ 属性替换宏,如Standard_NODISCARD替换为 [[nodiscard]][[maybe_unused]]

错误处理Geom基本函数使用 std::optional作为返回值,减少对无值异常的依赖;

译者说明:std::optional是一个极其重要的特性,可以更清晰明了的处理无效值、异常等情况。

安全性与速度:广泛使用限定词constexpr, noexcept

C++17 标准:升级为 C++17,以利用现代语言特性;

整合异常:减少基于派生自Standard_Failure的自定义故障类型数量,并将其整合到集中式结构中。Standard_Failure

🔮路线图和未来构想

OCCT团队目前正在验证8.0.0发布周期的多项重大增强。路线图如下:这些功能处于不同规划和开发阶段:
标准化异常:有针对性地替换,Standard_Failure>>>std::exception

文档升级:将文档从 Doxygen 迁移到基于 Markdown 的系统,以显著提升可读性和可访问性;

全新“ODE”格式(公告):DataExchange 模块中提出的格式,用于替代遗留的 BRep 格式。ODE(Open Data Exchange)专注于纯拓扑,但具备现代架构、版本控制支持和可扩展性;

新“XDE”格式(公告):通过XDE(扩展数据交换)扩展XCAF支持。该格式侧重于装配和产品结构数据(颜色、图层、材质),采用模块化架构,便于功能添加;关于XDE的一次实践,可参考文章Open CASCADE:模型带颜色导出至 STEP / IGES 文件

译者说明:此举或有助于实现对商软格式全量数据的支持。

🛠️ Light OCC

公告:Light OCCT(测试版)
OCCT开发团队正在积极开发名为Light OCCT的开源包装程序,计划在OCCT 8.0.0发布前进行测试版发布。

Light OCCT旨在通过优先考虑可用性、安全性和性能,降低使用门槛。该包装的主要目标包括:

现代C++接口:减少模板化,并无缝集成现代C++应用
增强安全性:融入内置最佳实践以提升应用可靠性
简化API:直观且用户友好接口,降低了学习曲线
多语言支持:现成的 Python 和 JavaScript/TypeScript 绑定(支持 Web 版)

译者说明:目前越来越多的传统桌面应用正在搬上云端。

随着OCCT 8.0即将发布,敬请关注更多技术深度解析!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值