如何使用PythonOCC导入参数化引用?

如何使用PythonOCC导入参数化引用?,python,cad,opencascade,Python,Cad,Opencascade,出于数据交换比较的原因,我需要从CAD文件中提取几何/参数参考。为此,我在conda环境中使用了PythonOCC库 到目前为止,我能够绘制提取的文件(在我的例子中是STEP文件),但是我找不到关于这个库的任何进一步文档(除了它拥有的所有函数API的列表,但是它对我没有帮助,因为有很多函数,它没有真正解释它是如何工作的)。我的目标是从NURBS/样条曲线描述中提取参数化参考,以捕获曲面的一些精确点(无需数据转换,这就是我不希望通过CAD环境的原因) 有没有人知道我应该如何研究pythonOCC的

出于数据交换比较的原因,我需要从CAD文件中提取几何/参数参考。为此,我在conda环境中使用了
PythonOCC

到目前为止,我能够绘制提取的文件(在我的例子中是STEP文件),但是我找不到关于这个库的任何进一步文档(除了它拥有的所有函数API的列表,但是它对我没有帮助,因为有很多函数,它没有真正解释它是如何工作的)。我的目标是从NURBS/样条曲线描述中提取参数化参考,以捕获曲面的一些精确点(无需数据转换,这就是我不希望通过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方程可能很难。例如,壳可能由几个面组成,每个面可能有不同的数学表示。因此,使用更高级别的开放级联功能可能是更好的方法

开放式级联有一个类
BRepExtrema\u DistShapeShape
。您可以使用两个
TopoDS\u Shape
s为其提供数据,并通过调用
PointOnShape1
PointOnShape2
获取两个形状上最近的点

如果将曲面几何体和顶点馈送给它,则可以获得最接近该顶点的曲面点。另一方面,如果将曲面几何图形和平行于z轴的(可能很长)边输入到给定的x/y元组,则可以检查交点数量(方法
NbSolution
),并获得交点坐标


这是你需要的吗?我已经从C++代码中给出了名字,但是最有可能的PythONC有相同的类和方法,名字非常相似……/P>什么是“提取参数引用来捕获表面上的精确点”?您输入的是什么以及预期的输出是什么?我的输入将是一个由SolidWorks生成的STEP文件,例如(我已经完成了这一部分),我的预期输出是获得允许我在实体表面中查找点的内容。通过在曲面上找到一些点,我的意思是给出x和y,并找到相应的z。我相信,从STEP文件的NURBS/样条曲线描述中获取这些几何规格的唯一方法是获取参数方程。我认为我真正需要的是您在这里引用的内容“另一方面,如果您使用曲面几何体和(可能很长的)曲面平行于z轴的边,并指向给定的x/y元组,您可以检查交点的数量(方法NbSolution)并获得交点坐标。“现在,更具体地说,我如何使用类和方法检查交点和坐标?我很抱歉以一种非常具体的方式问你,我对OCC不熟悉,而且我的Python技能也不太先进。我不知道Pythonoc,因此我无法真正帮助你。由于
BRepExtrema\u DistShapeShape
采用
TopoDS\u Shape
实例,因此需要创建这些实例。很可能您的曲面已经是一个
TopoDS\u形状
,因为您已经从STEP文件中读取了它。使用
BRepBuilderAPI\u MakeEdge
BRepBuilderAPI\u MakeVertex
您应该能够从给定坐标创建顶点或边。如果这是很难做到的,你可能不得不继续发布问题,等待PythONC专家来查看和回答。C++结构中的问题是怎样解决的?我在这里苦苦挣扎,因为几乎不可能找到PythonOCC的好例子/文档。我的意思是,我确信PythonOCC是非常强大的,但可以肯定的是,只有少数人能够使用它的完整能力。你可以在这里找到一些C++示例代码:此外,如果您在internet上搜索“pythonocc BRepExtrema_DistShapeShape”,您可能会发现一些Python示例代码。