# -*- coding: utf-8 -*-
#
# This file is subject to the terms and conditions defined in
# file 'LICENSE.txt', which is part of this source code package.
#
"""Vtu and Vtk file reader
"""
import os
import numpy as np
import BasicTools.Containers.ElementNames as EN
from BasicTools.Containers.UnstructuredMesh import UnstructuredMesh
from BasicTools.IO.ReaderBase import ReaderBase
from BasicTools.Bridges.vtkBridge import VtkToMesh
from BasicTools.IO.IOFactory import RegisterReaderClass
[docs]class VtkReader(ReaderBase):
"""Vtk Reader class
"""
def __init__(self,fileName = None) -> None:
super().__init__(fileName=fileName)
[docs] def Read(self, fileName:str=None) -> UnstructuredMesh:
"""Function that performs the reading mesh using vtk,
the reader is selected based on the file_extension.
Current files supported are vtk, stl
Parameters
----------
fileName : str, optional
name of the file to be read, by default None
Returns
-------
UnstructuredMesh
output unstructured mesh object containing reading result
"""
from vtkmodules.vtkCommonDataModel import vtkUnstructuredGrid, vtkPolyData
from vtkmodules.vtkIOLegacy import vtkGenericDataObjectReader
from vtkmodules.vtkIOGeometry import vtkSTLReader
VTK_ReaderByExtention ={ "stl": vtkSTLReader}
if fileName is not None:
self.SetFileName(fileName)
filename, file_extension = os.path.splitext(self.fileName)
reader = VTK_ReaderByExtention.get(file_extension, vtkGenericDataObjectReader)()
reader.SetFileName(self.fileName)
reader.Update()
res = reader.GetUnstructuredGridOutput()
if res is None:
res = reader.GetPolyDataOutput()
output = VtkToMesh(res)
output.ConvertDataForNativeTreatment()
return output
try:
import vtkmodules.vtkIOLegacy
RegisterReaderClass(".vtk",VtkReader)
RegisterReaderClass(".vti",VtkReader)
RegisterReaderClass(".vtp",VtkReader)
RegisterReaderClass(".vtr",VtkReader)
RegisterReaderClass(".vts",VtkReader)
RegisterReaderClass(".vtu",VtkReader)
except:
pass
[docs]def CheckIntegrity():
return 'ok'
if __name__ == '__main__':
print(CheckIntegrity())# pragma: no cover