python - 如何使用 PythonOCC 导入参数引用?
问题描述
出于数据交换比较的原因,我需要从 CAD 文件中提取几何/参数参考。为此,我PythonOCC
在 conda 环境中使用库。
到目前为止,我能够绘制提取的文件(在我的情况下是一个 STEP 文件),但我找不到关于这个库的任何进一步的文档(除了它拥有的所有函数 API 的列表,但它对我没有帮助,因为有很多功能,但并没有真正解释它是如何工作的)。我的目标是从 NURBS/Splines 描述中提取参数参考以捕获表面的一些精确点(没有数据转换,这就是我不想通过 CAD 环境的原因)。
有谁知道我应该如何探索 pythonOCC 的哪些功能或知道任何可以提供帮助的文档?
到目前为止,我的代码只能显示实体:
#Reads STEP files, checks them and translates their contents into Open CASCADE models.
from OCC.Core.STEPControl import STEPControl_Reader
step_reader = STEPControl_Reader()
step_reader.ReadFile(r'C:\Users\jonat\Desktop\aspherique_32spln_10-4tol.STP')
step_reader.TransferRoot()
lens = step_reader.Shape()
#Open display to plot the shape
from OCC.Display.SimpleGui import init_display
display, start_display, add_menu, add_function_to_menu = init_display()
display.DisplayShape(lens, update=True)
start_display()
解决方案
弄乱 NURBS 方程可能很难。例如,一个壳可能由几个面组成,每个面可能有不同的数学表示。因此使用更高级别的 Open CASCADE 功能可能是更好的方法。
打开 CASCADE 有一个类BRepExtrema_DistShapeShape
。您可以使用两个TopoDS_Shape
s 并通过调用PointOnShape1
并PointOnShape2
获取两个形状上的最近点来提供它。
如果你用你的表面几何图形和一个顶点来提供它,你可以获得最接近这个顶点的表面点。另一方面,如果你用你的表面几何形状和平行于 z 轴的(可能很长的)边缘来馈送它并进入给定的 x/y 元组,你可以检查交叉点的数量(方法NbSolution
)并获得交叉点坐标。
这是你需要的吗?我已经给出了 C++ 代码中的名称,但很可能 pythonOCC 具有相同的类和方法,但名称非常相似......?
推荐阅读
- angular - ArcGis Angular 的 UI 问题
- html - 为 html 编辑 css(bluedict)
- python - 如何按升序对 df.value_counts() 函数进行排序
- analysis - 在 Google Looker 中是否有一种很好的方法可以在不同时期之间进行方差分析?
- gatsby - 如果有匹配路径 gatsby,路径将不起作用
- c# - 定时器功能块 HttpTrigger Azure 功能 ap
- c++ - 删除 QMessageBox 中按钮上的图标
- c# - Automapper - 使用继承自 IEnumerable 的属性映射类的问题
- javascript - 如何旋转three.js元素周期表球体?
- html - 在 CSS/样式化组件的顶部中心对齐绝对位置