def _selectIDsHelper(proxyname, IDs=[], FieldType='POINT', ContainingCells=False, Source=None, Modifier=None): """Selects IDs of a given field type. - proxyname - name of the selection proxy to instantiate - IDs - list of IDs of attribute types to select. - FieldType - type of attribute to select, e.g., 'POINT', 'CELL' - ContainingCells - if True and FieldType is 'POINT', select the cells containing the points corresponding to the given IDs. - Source - If not None, specifies the sources whose elements should be selected by ID. - Modifier - 'ADD', 'SUBTRACT', 'TOGGLE', or None to define whether and how the selection should modify the existing selection. """ if not Source: Source = paraview.simple.GetActiveSource() repr = paraview.simple.GetRepresentation(Source) import paraview.vtk as vtk reprCollection = vtk.vtkCollection() reprCollection.AddItem(repr.SMProxy) selection = _createSelection(proxyname, IDs=IDs, FieldType=FieldType, ContainingCells=ContainingCells) if selection: selectionCollection = vtk.vtkCollection() selectionCollection.AddItem(selection.SMProxy) _collectSelectionPorts(reprCollection, selectionCollection, Modifier=Modifier) Source.UpdateVTKObjects() paraview.simple.RenderAllViews()
def SelectLocation(Locations=[], Source=None, Modifier=None): """Select points by location. - Locations - list of x, y, z points to select. - Source - if not set, then the selection will be on the active source """ if not Source: Source = paraview.simple.GetActiveSource() repr = paraview.simple.GetRepresentation(Source) import paraview.vtk as vtk reprCollection = vtk.vtkCollection() reprCollection.AddItem(repr.SMProxy) selection = _createSelection('LocationSelectionSource', Locations=Locations, FieldType='POINT') if selection: selectionCollection = vtk.vtkCollection() selectionCollection.AddItem(selection.SMProxy) _collectSelectionPorts(reprCollection, selectionCollection, Modifier=Modifier) Source.UpdateVTKObjects()
def SelectThresholds(Thresholds=[], ArrayName='', FieldType='POINT', Source=None, Modifier=None): """Select attributes in a source by thresholding on values in an associated array. - Thresholds - list of lower and upper threshold bounds. Attributes with associated values in the selected array between any set of bounds will be selected. - ArrayName - name of the array to threshold. - FieldType - atttribute to select, e.g., 'POINT' or 'CELL' - Source - if not set, then the selection will be on the active source """ if not Source: Source = paraview.simple.GetActiveSource() repr = paraview.simple.GetRepresentation(Source) import paraview.vtk as vtk reprCollection = vtk.vtkCollection() reprCollection.AddItem(repr.SMProxy) selection = _createSelection('ThresholdSelectionSource', Thresholds=Thresholds, ArrayName=ArrayName, FieldType=FieldType) if selection: selectionCollection = vtk.vtkCollection() selectionCollection.AddItem(selection.SMProxy) _collectSelectionPorts(reprCollection, selectionCollection, Modifier=Modifier) Source.UpdateVTKObjects()
def _surfaceSelectionHelper(rectOrPolygon, view, type, Modifier=None): """ Selects mesh elements on a surface - rectOrPolygon - represents either a rectangle or polygon. If a rectangle, consists of a list containing the bottom left (x1, y1) and top right (x2, y2) corner of a rectangle defining the selection region in the format [x1, y1, x2, y2]. If a polygon, list of points defining the polygon in x-y pairs (e.g., [x1, y1, x2, y2, x3, y3,...]) - view - the view in which to make the selection - type - the type of mesh element: 'POINT', 'CELL', or 'BLOCK' - Modifier - 'ADD', 'SUBTRACT', 'TOGGLE', or None to define whether and how the selection should modify the existing selection. """ if not view.SMProxy.IsA('vtkSMRenderViewProxy'): return # ensure the view has rendered so that the selection is valid paraview.simple.Render(view) if len(rectOrPolygon) == 0: rectOrPolygon = [0, 0, view.ViewSize[0], view.ViewSize[1]] from paraview.vtk import vtkCollection, vtkIntArray selectedReps = vtkCollection() selectionSources = vtkCollection() if type.startswith('POLYGON'): polygon = vtkIntArray() polygon.SetNumberOfComponents(2) for component in rectOrPolygon: polygon.InsertNextValue(component) if type == 'POINT': view.SelectSurfacePoints(rectOrPolygon, selectedReps, selectionSources, 0) elif type == 'CELL' or type == 'BLOCK': view.SelectSurfaceCells(rectOrPolygon, selectedReps, selectionSources, 0) elif type == 'FRUSTUM_POINTS': view.SelectFrustumPoints(rectOrPolygon, selectedReps, selectionSources, 0) elif type == 'FRUSTUM_CELLS': view.SelectFrustumCells(rectOrPolygon, selectedReps, selectionSources, 0) elif type == 'POLYGON_POINTS': view.SelectPolygonPoints(polygon, selectedReps, selectionSources, 0) elif type == 'POLYGON_CELLS': view.SelectPolygonCells(polygon, selectedReps, selectionSources, 0) else: raise RuntimeError("Invalid type %s" % type) _collectSelectionPorts(selectedReps, selectionSources, type == 'BLOCK', Modifier) paraview.simple.Render(view)
def QuerySelect(QueryString='', FieldType='POINT', Source=None, InsideOut=False): """Selection by query expression. - QueryString - string with NumPy-like boolean expression defining which attributes are selected - FieldType - atttribute to select, e.g., 'POINT' or 'CELL' - Source - if not set, then the selection will be on the active source - InsideOut - Invert the selection so that attributes that do not satisfy the expression are selected instead of elements that do """ if not Source: Source = paraview.simple.GetActiveSource() repr = paraview.simple.GetRepresentation(Source) import paraview.vtk as vtk reprCollection = vtk.vtkCollection() reprCollection.AddItem(repr.SMProxy) # convert FieldType to ElementType. Eventually, all public API should change # to accepting ElementType but we'll do that after all selection sources use # ElementType consistently. ftype = vtk.vtkSelectionNode.GetFieldTypeFromString(FieldType) if ftype == vtk.vtkSelectionNode.NUM_FIELD_TYPES: raise ValueError("Invalid FieldType '%s'" % FieldType) ElementType = vtk.vtkSelectionNode.ConvertSelectionFieldToAttributeType( ftype) selection = _createSelection('SelectionQuerySource', ElementType=ElementType, QueryString=QueryString, InsideOut=InsideOut) if selection: selectionCollection = vtk.vtkCollection() selectionCollection.AddItem(selection.SMProxy) _collectSelectionPorts(reprCollection, selectionCollection) Source.UpdateVTKObjects()