def Cube( center=(0., 0., 0.), x_length=1.0, y_length=1.0, z_length=1.0, bounds=None): """Create a cube. It's possible to specify either the center and side lengths or just the bounds of the cube. If ``bounds`` are given, all other arguments are ignored. Parameters ---------- center : np.ndarray or list Center in [x, y, z]. x_length : float length of the cube in the x-direction. y_length : float length of the cube in the y-direction. z_length : float length of the cube in the z-direction. bounds : np.ndarray or list Specify the bounding box of the cube. If given, all other arguments are ignored. ``(xMin,xMax, yMin,yMax, zMin,zMax)`` """ src = _vtk.vtkCubeSource() if bounds is not None: if np.array(bounds).size != 6: raise TypeError( 'Bounds must be given as length 6 tuple: (xMin,xMax, yMin,yMax, zMin,zMax)' ) src.SetBounds(bounds) else: src.SetCenter(center) src.SetXLength(x_length) src.SetYLength(y_length) src.SetZLength(z_length) src.Update() return pyvista.wrap(src.GetOutput())
def Cube(center=(0.0, 0.0, 0.0), x_length=1.0, y_length=1.0, z_length=1.0, bounds=None, clean=True): """Create a cube. It's possible to specify either the center and side lengths or just the bounds of the cube. If ``bounds`` are given, all other arguments are ignored. .. versionchanged:: 0.33.0 The cube is created using ``vtk.vtkCubeSource``. For compatibility with :func:`pyvista.PlatonicSolid`, face indices are also added as cell data. For full compatibility with :func:`PlatonicSolid() <pyvista.PlatonicSolid>`, one has to use ``x_length = y_length = z_length = 2 * radius / 3**0.5``. The cube points are also cleaned by default now, leaving only the 8 corners and a watertight (manifold) mesh. Parameters ---------- center : sequence, optional Center in ``[x, y, z]``. x_length : float, optional Length of the cube in the x-direction. y_length : float, optional Length of the cube in the y-direction. z_length : float, optional Length of the cube in the z-direction. bounds : sequence, optional Specify the bounding box of the cube. If given, all other size arguments are ignored. ``(xMin, xMax, yMin, yMax, zMin, zMax)``. clean : bool, optional Whether to clean the raw points of the mesh, making the cube manifold. Note that this will degrade the texture coordinates that come with the mesh, so if you plan to map a texture on the cube, consider setting this to ``False``. .. versionadded:: 0.33.0 Returns ------- pyvista.PolyData Mesh of the cube. Examples -------- Create a default cube. >>> import pyvista >>> mesh = pyvista.Cube() >>> mesh.plot(show_edges=True, line_width=5) """ src = _vtk.vtkCubeSource() if bounds is not None: if np.array(bounds).size != 6: raise TypeError( 'Bounds must be given as length 6 tuple: (xMin, xMax, yMin, yMax, zMin, zMax)' ) src.SetBounds(bounds) else: src.SetCenter(center) src.SetXLength(x_length) src.SetYLength(y_length) src.SetZLength(z_length) src.Update() cube = pyvista.wrap(src.GetOutput()) # add face index data for compatibility with PlatonicSolid # but make it inactive for backwards compatibility cube.cell_data.set_array([1, 4, 0, 3, 5, 2], ['FaceIndex']) # clean duplicate points if clean: cube.clean(inplace=True) return cube