Source code for BasicTools.Bridges.PyVistaBridge

# -*- coding: utf-8 -*-

[docs]def MeshToPyVista(mesh,TagsAsFields=False): from BasicTools.Bridges.vtkBridge import MeshToVtk import pyvista as pv return pv.wrap(MeshToVtk(mesh,TagsAsFields=TagsAsFields))
[docs]def PyVistaToMesh(pvmesh,FieldsAsTags=False): from BasicTools.Bridges.vtkBridge import VtkToMesh return VtkToMesh(pvmesh,FieldsAsTags=FieldsAsTags)
[docs]def PlotMesh(mesh,**kargs):# pragma: no cover from BasicTools.Containers.MeshBase import MeshBase if isinstance(mesh,MeshBase): pyVistaMesh = MeshToPyVista(mesh) else: pyVistaMesh = mesh pyVistaMesh.plot(**kargs)
[docs]def CheckIntegrity(GUI=False): from BasicTools.Helpers.Tests import SkipTest if SkipTest("PYVISTA_NO_FAIL"): return "ok" try: import pyvista except: return "skip : pyvista not installed" import BasicTools.Containers.ElementNames as ElementNames from BasicTools.Containers.UnstructuredMeshCreationTools import CreateMeshOf from BasicTools.Containers.MeshTools import IsClose points = [[0,0,0],[1,0,0],[0,1,0],[0,0,1] ] tet = [[0,1,2,3]] res = CreateMeshOf(points,tet,elemName = ElementNames.Tetrahedron_4 ) res.nodeFields = {"x": res.nodes[:,0].flatten(), "Pos":res.nodes} res.nodesTags.CreateTag("FirstPoint").AddToTag(0) res.elemFields = {"SecondPoint": res.GetElementsOfType(ElementNames.Tetrahedron_4).connectivity[:,1].flatten().astype(float), "conn": res.GetElementsOfType(ElementNames.Tetrahedron_4).connectivity } res.GetElementsOfType(ElementNames.Tetrahedron_4).tags.CreateTag("FirstTetrahedron").AddToTag(0) sol = MeshToPyVista(res,TagsAsFields= True) resII=PyVistaToMesh(sol,FieldsAsTags=True) print(res) print(resII) if not IsClose(res,resII): # pragma: no cover raise(Exception("The meshes are not equal")) if GUI: PlotMesh(res) PlotMesh(resII,eye_dome_lighting=True, cpos=[-1, -1, 0.2], color=True) return 'ok'
if __name__ == '__main__': print(CheckIntegrity(True))# pragma: no cover