Преобразование .stl в .step с использованием Python и FreeCAD - PullRequest
0 голосов
/ 16 мая 2019

Я работаю над проектом по преобразованию файла .stl в .step в Python.Я следил за этим видео на YouTube о том, как это сделать с помощью графического интерфейса.Он воспользовался встроенной в FreeCAD консолью Python и разработал следующий скрипт.В приведенном ниже скрипте я использую файл скобка.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__

Однако скрипт не работает должным образом.Он всегда создает файл с фиксированным (очень маленьким) размером, который не содержит требуемой части.Может кто-нибудь указать, что не так с моей универсальной версией?

...