def vtu2stl():
    reader = tvtk.XMLUnstructuredGridReader()
    reader.file_name = "top3d.vtu"

    surface_filter = tvtk.DataSetSurfaceFilter()
    surface_filter.set_input_connection(reader.output_port)

    triangle_filter = tvtk.TriangleFilter()
    triangle_filter.set_input_connection(surface_filter.output_port)

    writer = tvtk.STLWriter()
    writer.file_name = 'top3d.stl'
    writer.set_input_connection(triangle_filter.output_port)
    writer.write()


# import sys
# import vtk

# reader = vtk.vtkUnstructuredGridReader()
# reader.SetFileName('L_shape.vtu')
#
# surface_filter = vtk.vtkDataSetSurfaceFilter()
# surface_filter.SetInputConnection(reader.GetOutputPort())
#
# triangle_filter = vtk.vtkTriangleFilter()
# triangle_filter.SetInputConnection(surface_filter.GetOutputPort())
#
# writer = vtk.vtkSTLWriter()
# writer.SetFileName('L_shape.stl')
# writer.SetInputConnection(triangle_filter.GetOutputPort())
# writer.Write()
Esempio n. 2
0
    def save_stl(self, event=None):
        """Save last renderd scene as STL."""
        from tvtk.api import tvtk
        
        fdialog = wx.FileDialog(None, 'Save 3D scene as ...', wildcard='*.stl', style=wx.FD_SAVE)#|wx.HIDE_READONLY)
        succ = fdialog.ShowModal()
        
        if (succ == wx.ID_OK):
            fname = fdialog.GetPath()
            tvtk.STLWriter(input=self.lastSurf.actor.mapper.input, file_name=fname).write()

        fdialog.Destroy()