init
This commit is contained in:
@@ -0,0 +1,128 @@
|
||||
"""PyVista volume module."""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
from typing import TYPE_CHECKING
|
||||
|
||||
from pyvista._deprecate_positional_args import _deprecate_positional_args
|
||||
|
||||
from . import _vtk
|
||||
from .prop3d import Prop3D
|
||||
|
||||
if TYPE_CHECKING:
|
||||
from typing_extensions import Self
|
||||
|
||||
from .mapper import _BaseMapper
|
||||
from .volume_property import VolumeProperty
|
||||
|
||||
|
||||
class Volume(Prop3D, _vtk.vtkVolume):
|
||||
"""Wrapper class for VTK volume.
|
||||
|
||||
This class represents a volume in a rendered scene. It inherits
|
||||
functions related to the volume's position, orientation and origin
|
||||
from Prop3D.
|
||||
|
||||
"""
|
||||
|
||||
def __init__(self):
|
||||
"""Initialize volume."""
|
||||
super().__init__()
|
||||
|
||||
@property
|
||||
def mapper(self) -> _BaseMapper: # numpydoc ignore=RT01
|
||||
"""Return or set the mapper of the volume.
|
||||
|
||||
Examples
|
||||
--------
|
||||
Add a volume to a :class:`pyvista.Plotter` and get its mapper.
|
||||
|
||||
>>> import pyvista as pv
|
||||
>>> vol = pv.ImageData(dimensions=(10, 10, 10))
|
||||
>>> vol['scalars'] = 255 - vol.z * 25
|
||||
>>> pl = pv.Plotter()
|
||||
>>> actor = pl.add_volume(vol)
|
||||
>>> actor.mapper.bounds
|
||||
BoundsTuple(x_min = 0.0,
|
||||
x_max = 9.0,
|
||||
y_min = 0.0,
|
||||
y_max = 9.0,
|
||||
z_min = 0.0,
|
||||
z_max = 9.0)
|
||||
|
||||
"""
|
||||
return self.GetMapper() # type: ignore[return-value]
|
||||
|
||||
@mapper.setter
|
||||
def mapper(self, obj):
|
||||
self.SetMapper(obj)
|
||||
|
||||
@property
|
||||
def prop(self): # numpydoc ignore=RT01
|
||||
"""Return or set the property of this actor.
|
||||
|
||||
Examples
|
||||
--------
|
||||
Create an volume and get its properties.
|
||||
|
||||
>>> import pyvista as pv
|
||||
>>> vol = pv.ImageData(dimensions=(10, 10, 10))
|
||||
>>> vol['scalars'] = 255 - vol.z * 25
|
||||
>>> pl = pv.Plotter()
|
||||
>>> actor = pl.add_volume(vol)
|
||||
>>> actor.prop.GetShade()
|
||||
0
|
||||
|
||||
"""
|
||||
return self.GetProperty()
|
||||
|
||||
@prop.setter
|
||||
def prop(self, obj: VolumeProperty):
|
||||
self.SetProperty(obj)
|
||||
|
||||
@_deprecate_positional_args
|
||||
def copy(self: Self, deep: bool = True) -> Self: # noqa: FBT001, FBT002
|
||||
"""Create a copy of this volume.
|
||||
|
||||
Parameters
|
||||
----------
|
||||
deep : bool, default: True
|
||||
Create a shallow or deep copy of the volume. A deep copy will have a
|
||||
new property and mapper, while a shallow copy will use the mapper
|
||||
and property of this volume.
|
||||
|
||||
Returns
|
||||
-------
|
||||
Volume
|
||||
Deep or shallow copy of this volume.
|
||||
|
||||
Examples
|
||||
--------
|
||||
Create a volume of by adding it to a :class:`~pyvista.Plotter`
|
||||
and then copy the volume.
|
||||
|
||||
>>> import pyvista as pv
|
||||
>>> mesh = pv.Wavelet()
|
||||
>>> pl = pv.Plotter()
|
||||
>>> volume = pl.add_volume(mesh, diffuse=0.5)
|
||||
>>> new_volume = volume.copy()
|
||||
|
||||
Change the copy's properties. A deep copy is made by default, so the original
|
||||
volume is not affected.
|
||||
|
||||
>>> new_volume.prop.diffuse = 1.0
|
||||
>>> new_volume.prop.diffuse
|
||||
1.0
|
||||
|
||||
>>> volume.prop.diffuse
|
||||
0.5
|
||||
|
||||
"""
|
||||
new_actor = type(self)()
|
||||
if deep:
|
||||
if self.mapper is not None:
|
||||
new_actor.mapper = self.mapper.copy()
|
||||
new_actor.prop = self.prop.copy()
|
||||
else:
|
||||
new_actor.ShallowCopy(self)
|
||||
return new_actor
|
||||
Reference in New Issue
Block a user