Source code for ladybug_vtk.writer

"""Writer class to Support Polydata and JoindPolydata Class."""
import pathlib
import vtk
from enum import Enum
from typing import Union


[docs] class VTKWriters(Enum): """Vtk writers.""" legacy = 'vtk' binary = 'vtp'
[docs] def write_to_file( polydata: Union[vtk.vtkPolyData, vtk.vtkAppendPolyData], target_folder: str, file_name: str, writer: VTKWriters = VTKWriters.binary): """Write vtkPolyData to a file.""" extension = writer.value if writer.name == 'legacy': _writer = vtk.vtkPolyDataWriter() else: _writer = vtk.vtkXMLPolyDataWriter() if writer.name == 'binary': _writer.SetDataModeToBinary() else: _writer.SetDataModeToAscii() file_path = pathlib.Path(target_folder, f'{file_name}.{extension}') _writer.SetFileName(file_path.as_posix()) if isinstance(polydata, vtk.vtkPolyData): _writer.SetInputData(polydata) else: _writer.SetInputConnection(polydata.GetOutputPort()) _writer.Write() return file_path.as_posix()
[docs] def write_to_folder(polydata: Union[vtk.vtkPolyData, vtk.vtkAppendPolyData], target_folder: str): """Write PolyData to a folder using vtkJSONDataSetWriter.""" writer = vtk.vtkJSONDataSetWriter() folder = pathlib.Path(target_folder) folder.mkdir(parents=True, exist_ok=True) try: writer.SetFileName(folder.as_posix()) except AttributeError: archiver = vtk.vtkArchiver() archiver.SetArchiveName(folder.as_posix()) writer.SetArchiver(archiver) if isinstance(polydata, vtk.vtkPolyData): writer.SetInputData(polydata) else: writer.SetInputConnection(polydata.GetOutputPort()) writer.Write() return folder.as_posix()