python-3.x 从STEP文件中提取卷

798qvoo8  于 2023-07-01  发布在  Python
关注(0)|答案(2)|浏览(188)

我的目标是编写一个Python程序,提取STEP文件中对象的体积。我发现steputilsaoxchange是Python中存在的两个库,但它们似乎都没有包含足够的关于从文件中提取卷/属性的文档。是否有任何文件可以解释这一点?我对STL文件尝试了一个类似的用例,并且能够使用numpy-stl成功地实现它。我正在搜索类似numpy-stl的STEP文件。下面是我如何为STL文件实现它的示例代码。

import numpy
from stl import mesh
your_mesh = mesh.Mesh.from_file('/path/to/myfile.stl')
volume, cog, inertia = your_mesh.get_mass_properties()
print("Volume = {0}".format(volume))
aij0ehis

aij0ehis1#

编辑考虑到gkv311的建议:pythonOCC可用于直接计算体积。

from OCC.Core.GProp import GProp_GProps
from OCC.Core.BRepGProp import brepgprop_VolumeProperties
from OCC.Extend.DataExchange import read_step_file

my_shape = read_step_file(path_to_file)
prop = GProp_GProps()
tolerance = 1e-5 # Adjust to your liking
volume = brepgprop_VolumeProperties(myshape, prop, tolerance)
print(volume)

旧版本,使用STEPSTL转换。

绝对不是最优雅的解决方案,但它可以完成工作:使用Pythonocc(aoxchange基于的库),你可以将STEP文件转换为STL,然后使用你的问题的解决方案来计算STL的体积。

from OCC.Core.STEPControl import STEPControl_Reader
from OCC.Core.StlAPI import StlAPI_Writer

input_file  = 'myshape.stp'
output_file = 'myshape.stl'

# Load STEP file
step_reader = STEPControl_Reader()
step_reader.ReadFile( input_file )
step_reader.TransferRoot()
myshape = step_reader.Shape()
print("File loaded")

# Export to STL
stl_writer = StlAPI_Writer()
stl_writer.SetASCIIMode(True)
stl_writer.Write(myshape, output_file)
print("Done")
zy1mlcev

zy1mlcev2#

我试图在我的代码中使用上述解决方案,但我的代码没有给予任何输出。有人能检查一下吗?
Not able to get the total volume of the model using PythonOCC

相关问题