Source code for ladybug_vtk.joined_polydata
"""A VTK Appended Polydata object with additional methods."""
import vtk
from typing import List
from .writer import write_to_file, write_to_folder, VTKWriters
from .polydata import PolyData
[docs]
class JoinedPolyData(vtk.vtkAppendPolyData):
"""A thin wrapper around vtk.vtkAppendPolyData."""
def __init__(self) -> None:
super().__init__()
[docs]
@ classmethod
def from_polydata(cls, polydata: List[PolyData]):
"""Join several polygonal datasets.
This function merges several polygonal datasets into a single polygonal datasets.
All geometry is extracted and appended, but point and cell attributes (i.e.,
scalars, vectors, normals) are extracted and appended only if all datasets have
the point and/or cell attributes available. (For example, if one dataset has
point scalars but another does not, point scalars will not be appended.)
"""
joined_polydata = cls()
for vtk_polydata in polydata:
joined_polydata.AddInputData(vtk_polydata)
joined_polydata.Update()
return joined_polydata
[docs]
def append(self, polydata: PolyData) -> None:
"""Append a new polydata to current data."""
self.AddInputData(polydata)
self.Update()
[docs]
def extend(self, polydata: List[PolyData]) -> None:
"""Extend a list of new polydata to current data."""
for data in polydata:
self.AddInputData(data)
self.Update()
[docs]
def to_vtk(
self, target_folder: str, name: str, writer: VTKWriters = VTKWriters.binary
):
"""Write to a VTK file.
The file extension will be set to vtk for ASCII format and vtp for binary format.
"""
return write_to_file(self, target_folder, name, writer)
[docs]
def to_folder(self, target_folder='.'):
"""Write data to a folder with a JSON meta file.
This method generates a folder that includes a JSON meta file along with all the
binary arrays written as standalone binary files.
The generated format can be used by vtk.js using the reader below
https://kitware.github.io/vtk-js/examples/HttpDataSetReader.html
Args:
target_folder: Path to target folder. Default: .
"""
return write_to_folder(self, target_folder)