首页 > 解决方案 > 在 opencascade 中对 TopoDS_Edge 对象进行分类

问题描述

我遇到了一些 IGES/STEP 模型的挑战,我的代码无法根据边缘的基础分类对面进行分类,即边缘是直线(非有理 B 样条曲线)还是弧(有理 B 样条曲线)。我一直在使用下面的代码(适用于某些模型):

edgex.setIsRational(BRepAdaptor_Curve(edge).IsRational());

,其中边缘是 TopoDS_Edge 而 edgex 是自定义边缘对象。我也尝试了以下代码,但它在第二行使程序崩溃:

BRepAdaptor_Curve curve = BRepAdaptor_Curve(edge);
Handle_Geom_BSplineCurve spline = curve.BSpline();
edgex.setIsRational(spline.IsRational())

请您提供更好的方法或解决我的解决方案。先感谢您。

标签: opencascade

解决方案


您可以使用该BrepAdaptor::GetType()方法来确定曲线的类型。显然,第二行中的崩溃发生在边缘不是 BSpline 曲线,并且该BrepAdaptor::BSpline()方法创建了一个副本,并且没有任何东西可以制作它。


推荐阅读