OpenCascade求交点
OpenCascade交点组件用于计算 2D 或 3D 几何对象的交点,可以处理以下情况:
- 两条2D曲线的交点;
- 2D曲线的自交点;
- 3D 曲线与表面的交集;
- 两个表面之间的交点。
Geom2dAPI_InterCurveCurve类可以用来计算两个几何曲线(Geom2d_Curve)之间的交点(gp_Pnt2d) 以及曲线的自交点。
在这两种情况下,该算法都需要两个点之间容忍公差值(Standard_Real类型)。所有构造函数使用的默认公差值均为1.0e-6。
该算法在交点时返回一个点,在切线交点时下返回一个片段(Segment)。
1、两条曲线的交点
Geom2dAPI_InterCurveCurve类可以实例化为曲线C1和C2的交点:
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翻译整理,转载请标明出处