Opencascad开发(C++)-数据类型转换-Shape、Verterx和gp_pnt的转化

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 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);

你可能感兴趣的:(Opencascad开发,Opencascad,Qt,C++)