功能介绍
应用场景
OCC 7.3 版本引入了删除特征(Defeaturing)算法,可删除的特征包括孔、凸台、圆角、斜角、平面、槽等,详见OCC官方论坛。该功能常用于以下场景:
- 模型简化,例如有限元分析的前处理、轻量化显示的前处理等;
- 直接建模,在CAD软件中直接删除模型上的一些面,而不需要基于历史建模。该功能在NX软件中成为同步建模;
- 删除敏感数据,例如在分享模型时,移除一些敏感的属性;
- 补洞,在数控加工编程中,需要对零件上的一些凹槽、孔洞等进行填充,可以让加工更顺滑。可参考以前的一篇博文——CAM(计算机辅助制造)路径规划,是解决该问题的另一种途径。
Defeaturing仅做模型面的删除与拓扑更新,无特征识别,因此需要讲要删除的特征完整输入。
案例展示
该部分内容参考自 OCC官方论坛:3D Model Defeaturing 和 OCC 官方文档。
| 场景 | 输入 | 输出 | 说明 |
|---|---|---|---|
| 删除圆角 | ![]() | ![]() | |
| 删除槽 | ![]() | ![]() | 一个封闭槽、一个开放槽 |
| 删除平面 | ![]() | ![]() | 删除顶面后,倾斜平面自动衔接 |
| 先删除孔、再删除面 | ![]() ![]() | ![]() | 这里体现出了该算法的能力边界,由于存在两个圆柱孔,竖直面删除后两个侧面无法处理与两个圆柱孔的拓扑相交问题。在商业软件 NX中,也存在同样的问题。如下 |
| 在 NX 中删除竖直面 | ![]() ![]() | 同样,有警告 | |
| 在 NX 中先删除孔再删除竖直面 | ![]() ![]() | ![]() | 必须同时选择截至面,方可删除成功 |
| 删除槽的一部分 | ![]() | ![]() | |
| 删除拼接圆角 | ![]() | ![]() | |
| 删除拼接圆角 | ![]() | ![]() | |
| 删除拼接圆角 | ![]() | ![]() | |
| 删除拼接圆角 | ![]() | ![]() | |
| 删除台阶槽 | ![]() | ![]() ![]() | 如果删除槽的三个侧面,会删除失败——因为左侧的台阶面将无法填充;如果分别删除两个相连的侧面,则会分别得到右侧上下不同结果 |
除了上边展示的对一个实体进行操作之外,OCC还支持对组合实体(如装配体)进行操作,如下图所示,删除两个体中间的一个键槽:
| 场景 | 输入 | 输出 |
|---|---|---|
| 删除下方键槽 | ![]() | ![]() |
| 同时删除两个实体上的键槽 | ![]() | ![]() |
原理
API 级别接口是 BRepAlgoAPI_Defeaturing。算法得到一个新的模型,对输入的模型部进行修改,支持历史记录。支持的模型类型包括SOLID, COMPSOLID, COMPOUND of SOLIDs,待删除的特征通过来自于输入模型上的一个或多张面定义。
算法基本逻辑
局限性
以下模型的局部区域无法正常删除:



































被折叠的 条评论
为什么被折叠?



