def convert_array(arr, name='Data', deep=0, array_type=None, pdf=False): """A helper to convert a NumPy array to a vtkDataArray or vice versa Args: arr (ndarray or vtkDataArry) : A numpy array or vtkDataArry to convert name (str): the name of the data array for VTK deep (bool, int): if input is numpy array then deep copy values pdf (bool): if input is vtkDataArry, make a pandas DataFrame of the array Return: vtkDataArray, ndarray, or DataFrame: the converted array (if input is a NumPy ndaray then returns ``vtkDataArray`` or is input is ``vtkDataArray`` then returns NumPy ``ndarray``). If pdf==True and the input is ``vtkDataArry``, return a pandas DataFrame. """ num_data = pv.convert_array(arr, name=name, deep=deep, array_type=array_type) if not isinstance(num_data, np.ndarray): return num_data if not pdf: return num_data return pd.DataFrame(data=num_data, columns=[arr.GetName()])
def visible_pick_call_back(picker, event_id): picked = pyvista.MultiBlock() x0, y0, x1, y1 = renderer_().get_pick_position() if x0 >= 0: # initial pick position is (-1, -1, -1, -1) selector = _vtk.vtkOpenGLHardwareSelector() selector.SetFieldAssociation(_vtk.vtkDataObject.FIELD_ASSOCIATION_CELLS) selector.SetRenderer(renderer_()) selector.SetArea(x0, y0, x1, y1) selection = selector.Select() for node in range(selection.GetNumberOfNodes()): selection_node = selection.GetNode(node) if selection_node is None: # No selection continue cids = pyvista.convert_array(selection_node.GetSelectionList()) actor = selection_node.GetProperties().Get(_vtk.vtkSelectionNode.PROP()) if actor.GetProperty().GetRepresentation() != 2: # surface logging.warning("Display representations other than `surface` will result in incorrect results.") smesh = actor.GetMapper().GetInputAsDataSet() smesh = smesh.copy() smesh["original_cell_ids"] = np.arange(smesh.n_cells) tri_smesh = smesh.extract_surface().triangulate() cids_to_get = tri_smesh.extract_cells(cids)["original_cell_ids"] picked.append(smesh.extract_cells(cids_to_get)) if len(picked) == 1: self_().picked_cells = picked[0] else: self_().picked_cells = picked return end_pick_helper(picker, event_id)
def test_hanlde_array_with_null_name(): poly = pyvista.PolyData() # Add array with no name poly.GetPointData().AddArray(pyvista.convert_array(np.array([]))) html = poly._repr_html_() assert html is not None pdata = poly.point_arrays assert pdata is not None
def test_handle_array_with_null_name(): poly = pyvista.PolyData() # Add point array with no name poly.GetPointData().AddArray(pyvista.convert_array(np.array([]))) html = poly._repr_html_() assert html is not None pdata = poly.point_arrays assert pdata is not None assert len(pdata) == 1 # Add cell array with no name poly.GetCellData().AddArray(pyvista.convert_array(np.array([]))) html = poly._repr_html_() assert html is not None cdata = poly.cell_arrays assert cdata is not None assert len(cdata) == 1 # Add field array with no name poly.GetFieldData().AddArray(pyvista.convert_array(np.array([5, 6]))) html = poly._repr_html_() assert html is not None fdata = poly.field_arrays assert fdata is not None assert len(fdata) == 1