我创建了一个库,用于在 Python 中创建和使用 b 样条曲面,利用并行scipy.interpolate.RectBivariateSpline()
实例来保存节点向量、(X、Y、Z)控制点网格,以及 u 和 v 中的度数((t,c, k) 对其执行表面评估的元组)。我还编写了一个 STEP 解析器来读取从 CAD 包导出的表面数据;我从b_spline_surface_with_knots
文件中的实体中获取 (t, c, k) 值并将它们填充到我自己的对象中。表面库对我来说工作得很好,但是 STEP 解析器很痛苦,几乎每次我使用它时都会以各种方式失败。因此,我尝试使用“真正的”STEP 解析器,如下所示:
from OCC.STEPControl import STEPControl_Reader
from OCC.IFSelect import IFSelect_RetDone, IFSelect_ItemsByEntity
step_reader = STEPControl_Reader()
status = step_reader.ReadFile('c:/LPT/nomdata/lpt3.stp')
if status == IFSelect_RetDone: # check status
failsonly = False
step_reader.PrintCheckLoad(failsonly, IFSelect_ItemsByEntity)
step_reader.PrintCheckTransfer(failsonly, IFSelect_ItemsByEntity)
ok = step_reader.TransferRoot(1)
_nbs = step_reader.NbShapes()
aResShape = step_reader.Shape(1)
else:
print("Error: can't read file.")
sys.exit(0)
现在我有了这个aResShape
对象,但是在 IPython(也不是谷歌搜索)中没有多少戳戳和刺激它揭示了如何获得定义表面的 (t, c, k) 值。
有人可以指点我揭示这些价值观的方法吗?或者是否可能有另一个不那么不透明的基于 Python 的 STEP 解析器?