跳至正文
-
Subscribe to our newsletter & never miss our best posts. Subscribe Now!
CAE

学习CAE软件开发

CAE

学习CAE软件开发

  • 首页
  • OCCT
  • C++
  • 首页
  • OCCT
  • C++
关

搜索

  • https://www.facebook.com/
  • https://twitter.com/
  • https://t.me/
  • https://www.instagram.com/
  • https://youtube.com/
Subscribe
主页

OpenCASCADE 7.7.0 完全教程(三):建模算法实战

作者 Comely
2026年 3月 2日 2 分钟阅读
0

# OpenCASCADE 7.7.0 完全教程(三):建模算法实战

布尔运算

布尔运算是 CAD 建模中最常用的操作。

三种基本运算

运算 说明 API
Common 交集(共同部分) BRepAlgoAPI_Common
Fuse 并集(合并) BRepAlgoAPI_Fuse
Cut 差集(切除) BRepAlgoAPI_Cut

代码示例

#include <BRepPrimAPI_MakeBox.hxx>
#include <BRepPrimAPI_MakeSphere.hxx>
#include <BRepAlgoAPI_Fuse.hxx>
#include <BRepAlgoAPI_Cut.hxx>
#include <BRepAlgoAPI_Common.hxx>

// 创建立方体和球体
TopoDS_Solid box = BRepPrimAPI_MakeBox(50, 50, 50);
TopoDS_Solid sphere = BRepPrimAPI_MakeSphere(gp_Pnt(25, 25, 25), 30);

// 并集:合并两个形状
TopoDS_Shape fused = BRepAlgoAPI_Fuse(box, sphere);

// 差集:从立方体中切除球体
TopoDS_Shape cut = BRepAlgoAPI_Cut(box, sphere);

// 交集:取共同部分
TopoDS_Shape common = BRepAlgoAPI_Common(box, sphere);

扫掠操作

拉伸(Extrusion)

#include <BRepPrimAPI_MakePrism.hxx>
#include <gp_Vec.hxx>

// 创建面
TopoDS_Face face = ...;

// 沿 Z 轴拉伸 30
gp_Vec dir(0, 0, 30);
TopoDS_Shape prism = BRepPrimAPI_MakePrism(face, dir);

旋转(Revolution)

#include <BRepPrimAPI_MakeRevol.hxx>
#include <gp_Ax1.hxx>

// 创建轮廓
TopoDS_Face profile = ...;

// 绕 Z 轴旋转 360 度
gp_Ax1 axis(gp_Pnt(0, 0, 0), gp_Dir(0, 0, 1));
TopoDS_Shape revol = BRepPrimAPI_MakeRevol(profile, axis);

管道(Pipe)

#include <BRepOffsetAPI_MakePipe.hxx>

// 创建轮廓和路径
TopoDS_Wire profile = ...;
TopoDS_Wire path = ...;

// 沿路径扫掠
TopoDS_Shape pipe = BRepOffsetAPI_MakePipe(path, profile);

倒角和圆角

等半径圆角

#include <BRepFilletAPI_MakeFillet.hxx>

BRepFilletAPI_MakeFillet fillet(box);
TopExp_Explorer exp(box, TopAbs_EDGE);
while (exp.More()) {
    fillet.Add(2.0, TopoDS::Edge(exp.Current()));
    exp.Next();
}
TopoDS_Shape result = fillet.Shape();

变半径圆角

BRepFilletAPI_MakeFillet fillet(box);
TopoDS_Edge edge = ...;

// 在边的不同位置设置不同半径
fillet.Add(edge, 1.0, 0.0);  // 起点半径 1.0
fillet.Add(edge, 3.0, 0.5);  // 中点半径 3.0
fillet.Add(edge, 1.0, 1.0);  // 终点半径 1.0

TopoDS_Shape result = fillet.Shape();

倒角

#include <BRepFilletAPI_MakeChamfer.hxx>

BRepFilletAPI_MakeChamfer chamfer(box);
chamfer.Add(2.0, edge);  // 2mm 倒角
TopoDS_Shape result = chamfer.Shape();

抽壳(Shelling)

#include <BRepOffsetAPI_MakeThickSolid.hxx>

// 选择要移除的面
TopTools_ListOfShape removed;
removed.Append(bottomFace);

// 创建壁厚 2mm 的薄壳
BRepOffsetAPI_MakeThickSolid shell(box, removed, 2.0, 0.01);
TopoDS_Shape result = shell.Shape();

放样(Lofting)

#include <BRepOffsetAPI_ThruSections.hxx>

BRepOffsetAPI_ThruSections loft(true, false);

// 添加多个截面
loft.AddSection(profile1);
loft.AddSection(profile2);
loft.AddSection(profile3);

loft.CheckCompatibility(Standard_False);
TopoDS_Shape result = loft.Shape();

偏移(Offset)

#include <BRepOffsetAPI_MakeOffsetShape.hxx>

// 将形状表面偏移 5mm
BRepOffsetAPI_MakeOffsetShape offset(shape, 5.0, 0.01);
TopoDS_Shape result = offset.Shape();

常见建模流程

// 1. 创建基础形状
TopoDS_Solid base = BRepPrimAPI_MakeBox(100, 80, 60);

// 2. 切除特征
TopoDS_Solid cutter = BRepPrimAPI_MakeCylinder(10, 60);
TopoDS_Shape withHole = BRepAlgoAPI_Cut(base, cutter);

// 3. 添加圆角
BRepFilletAPI_MakeFillet fillet(withHole);
// ... 添加边
TopoDS_Shape filleted = fillet.Shape();

// 4. 抽壳
TopTools_ListOfShape removed;
removed.Append(topFace);
BRepOffsetAPI_MakeThickSolid shell(filleted, removed, 3.0, 0.01);
TopoDS_Shape finalPart = shell.Shape();

总结

建模算法是 OCCT 的核心功能,掌握这些算法可以创建复杂的 3D 模型。


字数:约 2000 字 | 分类:OpenCASCADE 教程 | 难度:进阶 | 版本:7.7.0

作者

Comely

关注我
其他文章
上一个

OpenCASCADE 从入门到精通(十):布尔运算实战 – 组合零件设计的核心技能

下一个

OpenCASCADE 7.7.0 完全教程(四):数据交换与格式转换

暂无评论!成为第一个。

发表回复 取消回复

您的邮箱地址不会被公开。 必填项已用 * 标注

近期文章

  • OpenCASCADE 7.7.0 完全教程(二十一):法兰盘参数化建模实战
  • OpenCASCADE 7.7.0 完全教程(二十):布尔运算实战
  • OpenCASCADE 7.7.0 完全教程(一):入门与架构详解
  • OpenCASCADE 7.7.0 完全教程(四):数据交换与格式转换
  • OpenCASCADE 7.7.0 完全教程(三):建模算法实战

归档

  • 2026 年 3 月

分类

  • 主页

opencascade小助手

Copyright 2026CAE. All rights reserved.
蜀ICP备2021024090号