目录
1、创建点gp_Pnt
2、创建向量gp_Vec
3、创建边TopoDS_Edge
4、线网络TopoDS_Wire
5、面TopoDS_Face
6、体TopoDS_Shape
OpenCascade中的拓朴实体如下图所示,其中Compound可以包含很多Solid;Solid由Shell包围而成;Shell由相连的Face组成;Wire由相连的Edge组成;Edge对应一条曲线,且曲线的端点处由Vertex组成;Vertex对应空间中一个点。
shape为基类;
Vertex顶点: 一种0维形状对应于几何中的点;
edge边: 一种形状对应一条曲线,并在每个末端通过一个顶点来约束;
wire线框:一个通过顶点互连的边的序列;
face面:部分(二维)平面或者(三维)表面,被一个闭合线框约束;
shell壳(qiao):线框边界线的边连接的面的集合;
solid实体:与一个壳绑定的三维空间的一部分;
Compound solid复合实体:实体的集合;
1、创建点gp_Pnt
gp_Pnt(0., 0., 0.) ;
三维坐标构建一个点
gp_Pnt::X();
gp_Pnt::Y();
gp_Pnt::Z();
可以取得已知点的X、Y、Z坐标
gp_Pnt::SetX();
gp_Pnt::SetY();
gp_Pnt::SetZ();
gp_Pnt::SetCoord();
可以设置三维点的坐标
2、创建向量gp_Vec
可以用两个顶点来生成一个向量。
比如:
gp_Pnt P1(0,0,0);
gp_Pnt P2(5,0,0);
gp_Vec V1 (P1,P2);
3、创建边TopoDS_Edge
BRepBuilderAPI_MakeEdge(const gp_Pnt& P1, const gp_Pnt& P2);
通过两个点构造边
BRepBuilderAPI_MakeEdge(const gp_Lin& L);
通过射线构造边
gp_Circ::gp_Circ(const gp_Ax2& A2, const Standard_Real Radius);
中心轴和半径构建一个圆。
此外gp_Elips(椭圆)、gp_Hypr(双曲线一支)、gp_Parab(抛物线)、Geom_Curve(弧线)、Geom2d_Curve(二维弧线)等亦可构建边
4、线网络TopoDS_Wire
BRepBuilderAPI_MakeWire创建线
BRepBuilderAPI_MakeWire::Add 添加线
BRepBuilderAPI_MakeWire::IsDone 判断添加边是否有效
BRepBuilderAPI_MakeWire::Error 返还构建结果状态
BRepBuilderAPI_MakeWire::Wire 返还构建的网格
BRepBuilderAPI_MakeWire::Edge 返还构建网格的最后一边(与原始边可能不同)
BRepBuilderAPI_MakeWire::Vertex 返还构建网格的最后一边的顶点?
目前已知,添加多条边时,若边之间不相交,会出现不可预知的错误。
5、面TopoDS_Face
BRepBuilderAPI_MakeFace创建面
可通过gp_Pln、gp_Cylinder、gp_Cone、gp_Sphere、gp_Torus等构造面
BRepBuilderAPI_MakeFace::Add 添加线
BRepBuilderAPI_MakeFace::IsDone 构成一个有效面则返还true
BRepBuilderAPI_MakeFace::Error 返还构建结果状态
BRepBuilderAPI_MakeFace::Face返回构建的面
6、体TopoDS_Shape
BRepPrimAPI_MakeBox
可创建矩形体
BRepPrimAPI_MakeWedge
创建楔形体(楔形体就是带斜面的长方体,即带角度的长方体。)
BRepPrimAPI_MakeOneAxis
创建旋转体(基类)
BRepPrimAPI_MakeCylinder
创建圆柱体
BRepPrimAPI_MakeCone
创建圆锥体
BRepPrimAPI_MakeSphere
创建球体
BRepPrimAPI_MakeTorus
创建圆环体
BRepPrimAPI_MakeRevolution
创建旋转体
BRepPrimAPI_MakeSweep
创建扫掠体(基类)
BRepOffsetAPI_MakePipe
创建管道
BRepOffsetAPI_MakePipeShell
BRepPrimAPI_MakePrism
创建拉伸体
BRepPrimAPI_MakeRevol
创建旋转体
TopoDS_Compound
复合体
BRep_Builder builder;
TopoDS_Compound Comp;
TopoDS_Shape S1, S2;
builder.Add(Comp, S1);
builder.Add(Comp, S2);
参考文献
1、Open CASCADE Technology - Open CASCADE Technology Documentation
2、Quaoar / lessons · GitLab