提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
- 1、前言
- 2、TopoDS_Shape与TopoDS_Vertex的转换
- 2.1 TopoDS_Shape到TopoDS_Vertex
- 2.2 TopoDS_Vertex到TopoDS_Shape
- 3、TopoDS_Vertex与gp_Pnt
- 3.1 TopoDS_Vertex到gp_Pnt
- 3.2 gp_Pnt到TopoDS_Vertex
1、前言
在Opencascader开发学习中,经常会遇到数据类型的转换,为了方便自己记忆,将这些类型转换逐个记录下来,本文记录TopoDS_Shape、TopoDS_Vertex和gp_Pnt的转换。
2、TopoDS_Shape与TopoDS_Vertex的转换
2.1 TopoDS_Shape到TopoDS_Vertex
为了防止转换时出现的错误,避免其他类型的干扰,还是要加上判断TopoDS_Shape是否是Vertex的语句,如:
TopoDS_Shape shape1;
if(shape1.ShapeType()== TopAbs_ShapeEnum::TopAbs_VERTEX)
{
}
如果是Vertex,才进行转换,转换采用TopoDS_Vertex,转换代码如下:
TopoDS_Shape shape;
if(shape.ShapeType()== TopAbs_ShapeEnum::TopAbs_VERTEX)
{
TopoDS_Vertex vertex1 = TopoDS::Vertex(shape);
}
2.2 TopoDS_Vertex到TopoDS_Shape
因为Vertex本身是TopoDS_Shape扩展出来的,所以其可以直接转换:
TopoDS_Vertex vertex1;
TopoDS_Shape shape1 = vertex1;
3、TopoDS_Vertex与gp_Pnt
3.1 TopoDS_Vertex到gp_Pnt
转换是利用BRep_Tool实现的,示例如下:
TopoDS_Vertex vertex1;
gp_Pnt pnt1 = BRep_Tool::Pnt(vertex1);
3.2 gp_Pnt到TopoDS_Vertex
gp_Pnt到TopoDS_Vertex的转换是通过BRepPrim_Builder来实现的,示例代码如下:
gp_Pnt p1(0,0,0);
TopoDS_Vertex vertex;
BRepPrim_Builder builder;
builder.MakeVertex(vertex,p1);