2

作为一个 OpenCASCADE 新手,我正在阅读 OpenCASCADE 教程:

https://www.opencascade.com/doc/occt-7.4.0/overview/html/occt__tutorial.html

有以下两个奇怪的调用:

BRepLib::BuildCurves3d(threadingWire1);
BRepLib::BuildCurves3d(threadingWire2);

本教程以这种方式解释了这两个调用的必要性:

请记住,这些线是由曲面和 2D 曲线构建的。就这些线而言,缺少一个重要的数据项:没有关于 3D 曲线的信息。幸运的是,您不需要自己计算,这可能是一项艰巨的任务,因为数学可能非常复杂。当一个形状包含除 3D 曲线之外的所有必要信息时,Open CASCADE Technology 提供了一种自动构建它们的工具。在BRepLib工具包中,您可以使用该BuildCurves3d方法计算形状所有边缘的 3D 曲线。

我没有完全清楚。

想象一下,我已经构造了一些TopoDS_Shape对象。

一般来说,我怎样才能确定是否BRepLib::BuildCurves3d需要调用?

4

1 回答 1

0

使用此代码,您可以获得边缘的 3D 曲线(取自BRepExtrema_DistanceSS.cxx):

Standard_Real aFirst, aLast;
Handle(Geom_Curve) pCurv = BRep_Tool::Curve(E, aFirst, aLast);

如果尚未创建 3D 曲线,pCurv则将是一个空句柄。使用它会导致分段错误。

我一直对实际使用 3D 曲线的地方感到兴奋。因此我尝试了几种算法。这些是我尝试过的使用 3D 曲线的算法:

  • 可视化
  • 导出到 BREP
  • 导出到 STEP
  • 长度测量
  • 检查电线是否闭合或有序

我发现使用 3D 曲线的唯一算法是使用BRepExtrema_DistShapeShape. 如果您尚未创建 3D 曲线,您将无法使用此类。

于 2020-02-04T09:05:25.507 回答