opencascade - 在 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())
请您提供更好的方法或解决我的解决方案。先感谢您。
解决方案
您可以使用该BrepAdaptor::GetType()
方法来确定曲线的类型。显然,第二行中的崩溃发生在边缘不是 BSpline 曲线,并且该BrepAdaptor::BSpline()
方法创建了一个副本,并且没有任何东西可以制作它。
推荐阅读
- c# - 转换参数 DataRowView
- android - 任务 ':app:transformClassesWithMultidexlistForDebug' 执行失败。> java.lang.UnsupportedOperationException(没有错误信息)
- javascript - YouTube 属性通过但未反映在视频中
- python - pytest 如何处理调用其他夹具的夹具?
- windows - 批处理脚本迭代形式
- android - Android Studio 布局资源目录的默认限定符是什么?
- bash - git fetch upstream master 不工作,怎么回事?
- android - 为发布获取错误构建签名应用程序,调试不会出现 aapt2 错误
- node.js - 尝试使用 url 访问响应数据
- android - 使用 MVP 在演示者中恢复状态