"""
This type stub file was generated by pyright.
"""

import vtkmodules.vtkCommonExecutionModel as __vtkmodules_vtkCommonExecutionModel

class vtkSelectPolyData(__vtkmodules_vtkCommonExecutionModel.vtkPolyDataAlgorithm):
    """
    vtkSelectPolyData - select portion of polygonal mesh; generate
    selection scalars
    
    Superclass: vtkPolyDataAlgorithm
    
    vtkSelectPolyData is a filter that selects polygonal data based on
    defining a "loop" and indicating the region inside of the loop. The
    mesh within the loop consists of complete cells (the cells are not
    cut). Alternatively, this filter can be used to generate scalars.
    These scalar values, which are a distance measure to the loop, can be
    used to clip, contour. or extract data (i.e., anything that an
    implicit function can do).
    
    The loop is defined by an array of x-y-z point coordinates.
    (Coordinates should be in the same coordinate space as the input
    polygonal data.) The loop can be concave and non-planar, but not
    self-intersecting. The input to the filter is a polygonal mesh (only
    surface primitives such as triangle strips and polygons); the output
    is either a) a portion of the original mesh laying within the
    selection loop (GenerateSelectionScalarsOff); or b) the same
    polygonal mesh with the addition of scalar values
    (GenerateSelectionScalarsOn).
    
    The algorithm works as follows. For each point coordinate in the
    loop, the closest point in the mesh is found. The result is a loop of
    closest point ids from the mesh. Then, the edges in the mesh
    connecting the closest points (and laying along the lines forming the
    loop) are found. A greedy edge tracking procedure is used as follows.
    At the current point, the mesh edge oriented in the direction of and
    whose end point is closest to the line is chosen. The edge is
    followed to the new end point, and the procedure is repeated. This
    process continues until the entire loop has been created.
    
    To determine what portion of the mesh is inside and outside of the
    loop, three options are possible. 1) the smallest connected region,
    2) the largest connected region, and 3) the connected region closest
       to a user specified point. (Set the ivar SelectionMode.)
    
    Once the loop is computed as above, the GenerateSelectionScalars
    controls the output of the filter. If on, then scalar values are
    generated based on distance to the loop lines. Otherwise, the cells
    laying inside the selection loop are output. By default, the mesh
    laying within the loop is output; however, if InsideOut is on, then
    the portion of the mesh laying outside of the loop is output.
    
    The filter can be configured to generate the unselected portions of
    the mesh as output by setting GenerateUnselectedOutput. Use the
    method GetUnselectedOutput to access this output. (Note: this flag is
    pertinent only when GenerateSelectionScalars is off.)
    
    @warning
    Make sure that the points you pick are on a connected surface. If
    not, then the filter will generate an empty or partial result. Also,
    self-intersecting loops will generate unpredictable results.
    
    @warning
    During processing of the data, non-triangular cells are converted to
    triangles if GenerateSelectionScalars is off.
    
    @sa
    vtkImplicitSelectionLoop
    """
    def GenerateSelectionScalarsOff(self):
        """
        V.GenerateSelectionScalarsOff()
        C++: virtual void GenerateSelectionScalarsOff()
        
        Set/Get the flag to control behavior of the filter. If
        GenerateSelectionScalars is on, then the output of the filter is
        the same as the input, except that scalars are generated. If off,
        the filter outputs the cells laying inside the loop, and does not
        generate scalars.
        """
        ...
    
    def GenerateSelectionScalarsOn(self):
        """
        V.GenerateSelectionScalarsOn()
        C++: virtual void GenerateSelectionScalarsOn()
        
        Set/Get the flag to control behavior of the filter. If
        GenerateSelectionScalars is on, then the output of the filter is
        the same as the input, except that scalars are generated. If off,
        the filter outputs the cells laying inside the loop, and does not
        generate scalars.
        """
        ...
    
    def GenerateUnselectedOutputOff(self):
        """
        V.GenerateUnselectedOutputOff()
        C++: virtual void GenerateUnselectedOutputOff()
        
        Control whether a second output is generated. The second output
        contains the polygonal data that's not been selected.
        """
        ...
    
    def GenerateUnselectedOutputOn(self):
        """
        V.GenerateUnselectedOutputOn()
        C++: virtual void GenerateUnselectedOutputOn()
        
        Control whether a second output is generated. The second output
        contains the polygonal data that's not been selected.
        """
        ...
    
    def GetClosestPoint(self):
        """
        V.GetClosestPoint() -> (float, float, float)
        C++: virtual double *GetClosestPoint()
        
        Set/Get the point used in SelectionModeToClosestPointRegion.
        """
        ...
    
    def GetGenerateSelectionScalars(self):
        """
        V.GetGenerateSelectionScalars() -> int
        C++: virtual vtkTypeBool GetGenerateSelectionScalars()
        
        Set/Get the flag to control behavior of the filter. If
        GenerateSelectionScalars is on, then the output of the filter is
        the same as the input, except that scalars are generated. If off,
        the filter outputs the cells laying inside the loop, and does not
        generate scalars.
        """
        ...
    
    def GetGenerateUnselectedOutput(self):
        """
        V.GetGenerateUnselectedOutput() -> int
        C++: virtual vtkTypeBool GetGenerateUnselectedOutput()
        
        Control whether a second output is generated. The second output
        contains the polygonal data that's not been selected.
        """
        ...
    
    def GetInsideOut(self):
        """
        V.GetInsideOut() -> int
        C++: virtual vtkTypeBool GetInsideOut()
        
        Set/Get the InsideOut flag. When off, the mesh within the loop is
        extracted. When on, the mesh outside the loop is extracted.
        """
        ...
    
    def GetLoop(self):
        """
        V.GetLoop() -> vtkPoints
        C++: virtual vtkPoints *GetLoop()
        
        Set/Get the array of point coordinates defining the loop. There
        must be at least three points used to define a loop.
        """
        ...
    
    def GetMTime(self):
        """
        V.GetMTime() -> int
        C++: vtkMTimeType GetMTime() override;
        
        Return this object's modified time.
        """
        ...
    
    def GetNumberOfGenerationsFromBase(self, string):
        """
        V.GetNumberOfGenerationsFromBase(string) -> int
        C++: vtkIdType GetNumberOfGenerationsFromBase(const char *type)
            override;
        
        Given a the name of a base class of this class type, return the
        distance of inheritance between this class type and the named
        class (how many generations of inheritance are there between this
        class and the named class). If the named class is not in this
        class's inheritance tree, return a negative value. Valid
        responses will always be nonnegative. This method works in
        combination with vtkTypeMacro found in vtkSetGet.h.
        """
        ...
    
    def GetNumberOfGenerationsFromBaseType(self, string):
        """
        V.GetNumberOfGenerationsFromBaseType(string) -> int
        C++: static vtkIdType GetNumberOfGenerationsFromBaseType(
            const char *type)
        
        Given a the name of a base class of this class type, return the
        distance of inheritance between this class type and the named
        class (how many generations of inheritance are there between this
        class and the named class). If the named class is not in this
        class's inheritance tree, return a negative value. Valid
        responses will always be nonnegative. This method works in
        combination with vtkTypeMacro found in vtkSetGet.h.
        """
        ...
    
    def GetSelectionEdges(self):
        """
        V.GetSelectionEdges() -> vtkPolyData
        C++: vtkPolyData *GetSelectionEdges()
        
        Return the (mesh) edges of the selection region.
        """
        ...
    
    def GetSelectionMode(self):
        """
        V.GetSelectionMode() -> int
        C++: virtual int GetSelectionMode()
        
        Control how inside/outside of loop is defined.
        """
        ...
    
    def GetSelectionModeAsString(self):
        """
        V.GetSelectionModeAsString() -> string
        C++: const char *GetSelectionModeAsString()
        
        Control how inside/outside of loop is defined.
        """
        ...
    
    def GetSelectionModeMaxValue(self):
        """
        V.GetSelectionModeMaxValue() -> int
        C++: virtual int GetSelectionModeMaxValue()
        
        Control how inside/outside of loop is defined.
        """
        ...
    
    def GetSelectionModeMinValue(self):
        """
        V.GetSelectionModeMinValue() -> int
        C++: virtual int GetSelectionModeMinValue()
        
        Control how inside/outside of loop is defined.
        """
        ...
    
    def GetUnselectedOutput(self):
        """
        V.GetUnselectedOutput() -> vtkPolyData
        C++: vtkPolyData *GetUnselectedOutput()
        
        Return output that hasn't been selected (if
        GenreateUnselectedOutput is enabled).
        """
        ...
    
    def InsideOutOff(self):
        """
        V.InsideOutOff()
        C++: virtual void InsideOutOff()
        
        Set/Get the InsideOut flag. When off, the mesh within the loop is
        extracted. When on, the mesh outside the loop is extracted.
        """
        ...
    
    def InsideOutOn(self):
        """
        V.InsideOutOn()
        C++: virtual void InsideOutOn()
        
        Set/Get the InsideOut flag. When off, the mesh within the loop is
        extracted. When on, the mesh outside the loop is extracted.
        """
        ...
    
    def IsA(self, string):
        """
        V.IsA(string) -> int
        C++: vtkTypeBool IsA(const char *type) override;
        
        Return 1 if this class is the same type of (or a subclass of) the
        named class. Returns 0 otherwise. This method works in
        combination with vtkTypeMacro found in vtkSetGet.h.
        """
        ...
    
    def IsTypeOf(self, string):
        """
        V.IsTypeOf(string) -> int
        C++: static vtkTypeBool IsTypeOf(const char *type)
        
        Return 1 if this class type is the same type of (or a subclass
        of) the named class. Returns 0 otherwise. This method works in
        combination with vtkTypeMacro found in vtkSetGet.h.
        """
        ...
    
    def NewInstance(self):
        """
        V.NewInstance() -> vtkSelectPolyData
        C++: vtkSelectPolyData *NewInstance()
        """
        ...
    
    def SafeDownCast(self, vtkObjectBase):
        """
        V.SafeDownCast(vtkObjectBase) -> vtkSelectPolyData
        C++: static vtkSelectPolyData *SafeDownCast(vtkObjectBase *o)
        """
        ...
    
    def SetClosestPoint(self, p_float, p_float_1, p_float_2):
        """
        V.SetClosestPoint(float, float, float)
        C++: virtual void SetClosestPoint(double _arg1, double _arg2,
            double _arg3)
        V.SetClosestPoint((float, float, float))
        C++: virtual void SetClosestPoint(const double _arg[3])
        
        Set/Get the point used in SelectionModeToClosestPointRegion.
        """
        ...
    
    def SetGenerateSelectionScalars(self, p_int):
        """
        V.SetGenerateSelectionScalars(int)
        C++: virtual void SetGenerateSelectionScalars(vtkTypeBool _arg)
        
        Set/Get the flag to control behavior of the filter. If
        GenerateSelectionScalars is on, then the output of the filter is
        the same as the input, except that scalars are generated. If off,
        the filter outputs the cells laying inside the loop, and does not
        generate scalars.
        """
        ...
    
    def SetGenerateUnselectedOutput(self, p_int):
        """
        V.SetGenerateUnselectedOutput(int)
        C++: virtual void SetGenerateUnselectedOutput(vtkTypeBool _arg)
        
        Control whether a second output is generated. The second output
        contains the polygonal data that's not been selected.
        """
        ...
    
    def SetInsideOut(self, p_int):
        """
        V.SetInsideOut(int)
        C++: virtual void SetInsideOut(vtkTypeBool _arg)
        
        Set/Get the InsideOut flag. When off, the mesh within the loop is
        extracted. When on, the mesh outside the loop is extracted.
        """
        ...
    
    def SetLoop(self, vtkPoints):
        """
        V.SetLoop(vtkPoints)
        C++: virtual void SetLoop(vtkPoints *)
        
        Set/Get the array of point coordinates defining the loop. There
        must be at least three points used to define a loop.
        """
        ...
    
    def SetSelectionMode(self, p_int):
        """
        V.SetSelectionMode(int)
        C++: virtual void SetSelectionMode(int _arg)
        
        Control how inside/outside of loop is defined.
        """
        ...
    
    def SetSelectionModeToClosestPointRegion(self):
        """
        V.SetSelectionModeToClosestPointRegion()
        C++: void SetSelectionModeToClosestPointRegion()
        
        Control how inside/outside of loop is defined.
        """
        ...
    
    def SetSelectionModeToLargestRegion(self):
        """
        V.SetSelectionModeToLargestRegion()
        C++: void SetSelectionModeToLargestRegion()
        
        Control how inside/outside of loop is defined.
        """
        ...
    
    def SetSelectionModeToSmallestRegion(self):
        """
        V.SetSelectionModeToSmallestRegion()
        C++: void SetSelectionModeToSmallestRegion()
        
        Control how inside/outside of loop is defined.
        """
        ...
    
    def __delattr__(self, *args, **kwargs):
        """ Implement delattr(self, name). """
        ...
    
    def __getattribute__(self, *args, **kwargs):
        """ Return getattr(self, name). """
        ...
    
    def __init__(self, *args, **kwargs) -> None:
        ...
    
    @staticmethod
    def __new__(*args, **kwargs):
        """ Create and return a new object.  See help(type) for accurate signature. """
        ...
    
    def __repr__(self, *args, **kwargs):
        """ Return repr(self). """
        ...
    
    def __setattr__(self, *args, **kwargs):
        """ Implement setattr(self, name, value). """
        ...
    
    def __str__(self, *args, **kwargs) -> str:
        """ Return str(self). """
        ...
    
    __this__ = ...
    __dict__ = ...
    __vtkname__ = ...


