我正在一个项目中,将Python中的.stl文件转换为.step。我跟随this youtube视频介绍了如何借助GUI。 In在Python控制台内置的FreeCAD的帮助下,提出了以下脚本。在下面的脚本中,我正在使用一个名为方括号(stl.stl)的文件,该文件具有一个名称为方括号的网格。
Mesh.open(INPUT)
App.setActiveDocument("Unnamed")
App.ActiveDocument=App.getDocument("Unnamed")
FreeCAD.getDocument("Unnamed").addObject("Part::Feature","bracket001")
__shape__=Part.Shape()
__shape__.makeShapeFromMesh(FreeCAD.getDocument("Unnamed").getObject("bracket").Mesh.Topology,0.100000)
FreeCAD.getDocument("Unnamed").getObject("bracket001").Shape=__shape__
FreeCAD.getDocument("Unnamed").getObject("bracket001").purgeTouched()
del __shape__
App.ActiveDocument.addObject('Part::Feature','bracket001').Shape=App.ActiveDocument.bracket001.Shape.removeSplitter()
App.ActiveDocument.ActiveObject.Label=App.ActiveDocument.bracket001.Label
App.ActiveDocument.recompute()
__objs__=[]
__objs__.append(FreeCAD.getDocument("Unnamed").getObject("bracket001001"))
Part.export(__objs__,u"output.step")
del __objs__
上面的代码可以正常工作,并将.stl文件转换为.step
我试图使代码更具通用性(以说明不同的文件名和不同的网格编号)。以下是我的想法。
Mesh.open(INPUT)
App.setActiveDocument("Unnamed")
App.ActiveDocument=App.getDocument("Unnamed")
objects = FreeCAD.getDocument("Unnamed").Objects
FreeCAD.getDocument("Unnamed").addObject("Part::Feature","Feature_1")
__objs__=[]
for ob in objects:
mesh = ob.Name
print("MESH NAME:" + mesh)
__shape__=Part.Shape()
__shape__.makeShapeFromMesh(FreeCAD.getDocument("Unnamed").getObject("mesh").Mesh.Topology,0.100000)
FreeCAD.getDocument("Unnamed").getObject("Feature_1").Shape=__shape__
FreeCAD.getDocument("Unnamed").getObject("Feature_1").purgeTouched()
del __shape__
App.ActiveDocument.addObject('Part::Feature','Feature_1').Shape=App.ActiveDocument.Feature_1.Shape.removeSplitter()
App.ActiveDocument.ActiveObject.Label=App.ActiveDocument.Feature_1.Label
App.ActiveDocument.recompute()
# __objs__=[]
__objs__.append(FreeCAD.getDocument("Unnamed").getObject("Feature_2"))
Part.export(__objs__,u"output.step")
del __objs__
但是,脚本无法按预期运行。它总是创建一个固定大小(很小)的文件,其中不包含所需的声部。有人可以指出我的通用版本有什么问题吗?