OpenCascade求交点

OpenCascade交点组件用于计算 2D 或 3D 几何对象的交点,可以处理以下情况:

  • 两条2D曲线的交点;
  • 2D曲线的自交点;
  • 3D 曲线与表面的交集;
  • 两个表面之间的交点。

Geom2dAPI_InterCurveCurve类可以用来计算两个几何曲线(Geom2d_Curve)之间的交点(gp_Pnt2d) 以及曲线的自交点。

曲线相交与自相交

在这两种情况下,该算法都需要两个点之间容忍公差值(Standard_Real类型)。所有构造函数使用的默认公差值均为1.0e-6。

交点和相切交点

该算法在交点时返回一个点,在切线交点时下返回一个片段(Segment)。

1、两条曲线的交点

Geom2dAPI_InterCurveCurve类可以实例化为曲线C1C2的交点:

Geom2dAPI_InterCurveCurve Intersector(C1,C2,tolerance); 

或曲线C3的自交点:

Geom2dAPI_InterCurveCurve Intersector(C3,tolerance); 

使用  NbPoints() 方法获得交点数量:

Standard_Integer N = Intersector.NbPoints(); 

要选择所需的交点,只需在 NbPoints()参数中传递整数索引值:

gp_Pnt2d P = Intersector.Point(Index); 

要获取相交片段的数量,可以使用:

Standard_Integer M = Intersector.NbSegments(); 

要选择指定的相交片段,只需传入相应的序号:

Handle(Geom2d_Curve) Seg1, Seg2; 
Intersector.Segment(Index,Seg1,Seg2); 
// if intersection of 2 curves 
Intersector.Segment(Index,Seg1); 
// if self-intersection of a curve 

如果需要访问更多方法,可以使用下面代码返回的算法对象:

Geom2dInt_GInter& TheIntersector = Intersector.Intersector(); 

2、曲线和表面的交点

GeomAPI_IntCS类用于计算曲线和表面之间的交点。

可以使用如下代码实例化GeopAPI_IntCS类:

GeomAPI_IntCS Intersector(C, S); 

要获取交点数量,可以使用如下代码:

Standard_Integer nb = Intersector.NbPoints(); 

类似的,传入序号即可返回指定的交点:

gp_Pnt& P = Intersector.Point(Index)

3、两个表面的交线

GeomAPI_IntSS类用于计算指定公差下两个Geom_Surface表面的交线。

可以使用如下代码实例化GeomAPI_IntSS类:

GeomAPI_IntSS Intersector(S1, S2, Tolerance); 

创建GeomAPI_IntSS对象后,可以用如下代码得到交线数量:

Standard_Integer nb = Intersector. NbLines(); 

传入序号即可得到相应的交线:

Handle(Geom_Curve) C = Intersector.Line(Index) 

原文链接:Modeling Algorithms - Open CASCADE Technology Documentation

BimAnt翻译整理,转载请标明出处