Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
"""
name = kwargs.get('name', str(hex(id(mesh))))
rng = mesh.get_data_range(kwargs.get('scalars', None))
kwargs.setdefault('clim', kwargs.pop('rng', rng))
self.add_mesh(mesh.outline(), name=name+"outline", opacity=0.0)
port = 1 if invert else 0
alg = vtk.vtkBoxClipDataSet()
alg.SetInputDataObject(mesh)
alg.GenerateClippedOutputOn()
if not hasattr(self, "box_clipped_meshes"):
self.box_clipped_meshes = []
box_clipped_mesh = pyvista.wrap(alg.GetOutput(port))
self.box_clipped_meshes.append(box_clipped_mesh)
def callback(planes):
bounds = []
for i in range(planes.GetNumberOfPlanes()):
plane = planes.GetPlane(i)
bounds.append(plane.GetNormal())
bounds.append(plane.GetOrigin())
alg.SetBoxClip(*bounds)
alg.Update()
box_clipped_mesh.shallow_copy(alg.GetOutput(port))
self.add_box_widget(callback=callback, bounds=mesh.bounds,
factor=1.25, rotation_enabled=rotation_enabled,
use_planes=True, color=widget_color,
"""
name = kwargs.get('name', str(hex(id(mesh))))
rng = mesh.get_data_range(kwargs.get('scalars', None))
kwargs.setdefault('clim', kwargs.pop('rng', rng))
self.add_mesh(mesh.outline(), name=name+"outline", opacity=0.0)
alg = vtk.vtkCutter() # Construct the cutter object
alg.SetInputDataObject(mesh) # Use the grid as the data we desire to cut
if not generate_triangles:
alg.GenerateTrianglesOff()
if not hasattr(self, "plane_sliced_meshes"):
self.plane_sliced_meshes = []
plane_sliced_mesh = pyvista.wrap(alg.GetOutput())
self.plane_sliced_meshes.append(plane_sliced_mesh)
def callback(normal, origin):
# create the plane for clipping
plane = generate_plane(normal, origin)
alg.SetCutFunction(plane) # the cutter to use the plane we made
alg.Update() # Perform the Cut
plane_sliced_mesh.shallow_copy(alg.GetOutput())
self.add_plane_widget(callback=callback, bounds=mesh.bounds,
factor=1.25, normal=normal,
color=widget_color, tubing=tubing,
assign_to_axis=assign_to_axis,
origin_translation=origin_translation,
outline_translation=outline_translation,
implicit=implicit, origin=mesh.center)
attrs = {}
if not isinstance(attrs, dict):
raise TypeError('Attributes must be a dictionary of name and arguments.')
reader.SetFileName(filename)
# Apply any attributes listed
for name, args in attrs.items():
attr = getattr(reader, name)
if args is not None:
if not isinstance(args, (list, tuple)):
args = [args]
attr(*args)
else:
attr()
# Perform the read
reader.Update()
return pyvista.wrap(reader.GetOutputDataObject(0))
# Credits:
# https://github.com/akaszynski/pyacvd
# Needs PyACVD:
# pip install pyacvd
#
from vtkplotter import *
from pyvista import wrap
from pyacvd import Clustering
mesh = Sphere(res=50).subdivide().lw(0.2).normalize().cutWithPlane()
clus = Clustering(wrap(mesh.polydata()))
clus.cluster(1000, maxiter=100, iso_try=10, debug=False)
pvremesh = clus.create_mesh()
remesh = Actor(pvremesh).computeNormals()
remesh.color('o').backColor('v').lw(0.2)
show(mesh, remesh, N=2)
alg.SetIntegratorTypeToRungeKutta2()
elif integrator_type == 4:
alg.SetIntegratorTypeToRungeKutta4()
else:
alg.SetIntegratorTypeToRungeKutta45()
# set interpolator type
if interpolator_type in ['c', 'cell']:
alg.SetInterpolatorTypeToCellLocator()
else:
alg.SetInterpolatorTypeToDataSetPointLocator()
# run the algorithm
alg.Update()
output = _get_output(alg)
if return_source:
source.Update()
src = pyvista.wrap(source.GetOutput())
return output, src
return output
def _run_image_filter(self, ifilter):
# Update filter and grab pixels
ifilter.Modified()
ifilter.Update()
image = pyvista.wrap(ifilter.GetOutput())
img_size = image.dimensions
img_array = pyvista.utilities.point_scalar(image, 'ImageScalars')
# Reshape and write
tgt_size = (img_size[1], img_size[0], -1)
return img_array.reshape(tgt_size)[::-1]
def add_mesh(self, mesh, color=None, scalars=None, clim=None,
opacity=1.0, n_colors=256, cmap='Viridis (matplotlib)',
**kwargs):
"""Add mesh to the scene."""
if not pv.is_pyvista_dataset(mesh):
mesh = pv.wrap(mesh)
mesh = mesh.copy()
if scalars is None and color is None:
scalars = mesh.active_scalar_name
if scalars is not None:
array = mesh[scalars].copy()
mesh.clear_arrays()
mesh[scalars] = array
mesh.active_scalar_name = scalars
elif color is not None:
mesh.clear_arrays()
mesh = to_geometry(mesh)
self._geometries.append(mesh)
self._geometry_colors.append(pv.parse_color(color))
def _run_image_filter(self, ifilter):
# Update filter and grab pixels
ifilter.Modified()
ifilter.Update()
image = pyvista.wrap(ifilter.GetOutput())
img_size = image.dimensions
img_array = pyvista.utilities.point_scalar(image, 'ImageScalars')
# Reshape and write
tgt_size = (img_size[1], img_size[0], -1)
return img_array.reshape(tgt_size)[::-1]