pymel.core.modeling.polySelectConstraint

polySelectConstraint(*args, **kwargs)

Changes the global polygonal selection constraints. In query mode, return type is based on queried flag.

Flags:

Long Name / Short Name Argument Types Properties
angle / a int ../../../_images/create.gif ../../../_images/query.gif
  0(off) 1(on).
anglePropagation / ap bool ../../../_images/create.gif ../../../_images/query.gif
  If true, selection will be extended to all connected components whose normal is close to any of the normals of the original selection (see angleTolerance)
angleTolerance / at float ../../../_images/create.gif ../../../_images/query.gif
  When angle propagation is turned on, this controls what is the maximum difference of the normal vectors where the selection propagates.
anglebound / ab float, float ../../../_images/create.gif ../../../_images/query.gif
  min and max angles. The given value should be in the current units that Maya is using. See the examples for how to check the current unit. For vertices : angle between the 2 edges owning the vertex. For edges : angle between the 2 faces owning the edge.
border / bo bool ../../../_images/create.gif ../../../_images/query.gif
  Use -uvConstraint trueto edit/query UV view constraint.If true, selection will be extended to all connected border components so that the whole loopis selected. It also removes all nonborder components from the existing selection (compatibility mode)
borderPropagation / bp bool ../../../_images/create.gif ../../../_images/query.gif
  If true, selection will be extended to all connected border components so that the whole loopis selected.
convexity / c int ../../../_images/create.gif ../../../_images/query.gif
  0(off) 1(concave) 2(convex).
crease / cr bool ../../../_images/create.gif ../../../_images/query.gif
  If true, selection will be extended to all connected creased components.
disable / dis bool ../../../_images/create.gif
  Toggles offall constraints for all component types, but leaves the other constraint parameters. This flag may be used together with other ones toggling some constraints on: if so, all constraints are disabled first (no matter the position of the -disable flag in the command line) then the specified ones are activated.
dist / d int ../../../_images/create.gif ../../../_images/query.gif
  0(off) 1(to point) 2(to axis) 3(to plane).
distaxis / da float, float, float ../../../_images/create.gif ../../../_images/query.gif
  axis. (Normal to the plane in case of distance to plane).
distbound / db float, float ../../../_images/create.gif ../../../_images/query.gif
  min and max distances.
distpoint / dp float, float, float ../../../_images/create.gif ../../../_images/query.gif
  point. (Axis/plane origin in case of distance to axis/plane).
edgeDistance / ed int ../../../_images/create.gif
  Maximum distance (number of edges) to extend the edge selection for Contiguous Edgespropagate mode. 0 means to ignore the distance constraint.
geometricarea / ga int ../../../_images/create.gif ../../../_images/query.gif
  0(off) 1(on).
geometricareabound / gab float, float ../../../_images/create.gif ../../../_images/query.gif
  min and max areas.
holes / h int ../../../_images/create.gif ../../../_images/query.gif
  0(off) 1(holed) 2(non holed).
length / l int ../../../_images/create.gif ../../../_images/query.gif
  0(off) 1(on).
lengthbound / lb float, float ../../../_images/create.gif ../../../_images/query.gif
  min and max lengths.
loopPropagation / lp bool ../../../_images/create.gif ../../../_images/query.gif
  If true, edge selection will be extended to a loop.
max2dAngle / m2a float ../../../_images/create.gif
  Maximum angle between two consecutive edges in the 2d tangent plane for Contiguous Edgespropagate mode.
max3dAngle / m3a float ../../../_images/create.gif
  Maximum angle between two consecutive edges in 3d space for Contiguous Edgespropagate mode.
mode / m int ../../../_images/create.gif ../../../_images/query.gif
  0(Off) 1(Next) 2(Current and Next) 3(All and Next). Off : no constraints are used at all. Next : constraints will be used to filter next selections. Current and Next : constraints will be aplied on current selection and then used to filter next selections. All and Next : all items satisfying constraints are selected.
nonmanifold / nm int ../../../_images/create.gif ../../../_images/query.gif
  0(off) 1(on)
oppositeEdges / oe bool ../../../_images/create.gif
  Use the opposite edges
order / order int ../../../_images/create.gif ../../../_images/query.gif
  0(off) 1(on).
orderbound / orb int, int ../../../_images/create.gif ../../../_images/query.gif
  min and max orders. number of owning edges.
orient / o int ../../../_images/create.gif ../../../_images/query.gif
  0(off) 1(orientation) 2(direction).
orientaxis / oa float, float, float ../../../_images/create.gif ../../../_images/query.gif
  axis.
orientbound / ob float, float ../../../_images/create.gif ../../../_images/query.gif
  min and max angles. The given value should be in the current units that Maya is using. See the examples for how to check the current unit.
planarity / p int ../../../_images/create.gif ../../../_images/query.gif
  0(off) 1(non planar) 2(planar).
propagate / pp int ../../../_images/create.gif ../../../_images/query.gif
  0(Off) 1(More) 2(Less) 3(Border) 4(Contiguous Edges) 5(Grow Along Loop) 6(Shrink Along Loop). More : will add current selection border to current selection. Less : will remove current selection border from current selection. Border : will keep only current selection border. Contiguous Edges : Add edges aligned with the current edges selected. The direction and number of edges selected is controlled by the -m2a, -m3a, and -ed flags. Grow Along Loop: Will grow current selection along loop, support face, edge, vertex and UV. Shrink Along Loop: Will shrink current selection along loop, support face, edge, vertex and UV.
random / r int ../../../_images/create.gif ../../../_images/query.gif
  0(off) 1(on).
randomratio / rr float ../../../_images/create.gif ../../../_images/query.gif
  ratio [0,1].
returnSelection / rs bool ../../../_images/create.gif
  If true, current selection will not be modified, instead the new selection will be returned as result.
ringPropagation / rp bool ../../../_images/create.gif ../../../_images/query.gif
  If true, edge selection will be extended to a ring.
shell / sh bool ../../../_images/create.gif ../../../_images/query.gif
  If true, selection will be extended to all connected components so that the whole piece of object is selected.
size / sz int ../../../_images/create.gif ../../../_images/query.gif
  0(off) 1(triangles) 2(quads) 3(nsided).
smoothness / sm int ../../../_images/create.gif ../../../_images/query.gif
  0(off) 1(hard) 2(smooth).
stateString / sts bool ../../../_images/query.gif
  Query only flag. Returns the MEL command that would restore all the current settings.
textured / tx int ../../../_images/create.gif ../../../_images/query.gif
  0(off) 1(mapped) 2(unmapped).
texturedarea / ta int ../../../_images/create.gif ../../../_images/query.gif
  0(off) 1(Area specified is unsigned) 2(Area specified is signed).
texturedareabound / tab float, float ../../../_images/create.gif ../../../_images/query.gif
  min and max areas.
textureshared / ts int ../../../_images/create.gif ../../../_images/query.gif
  0(off) 1(on). This option will select any UVs on the currentMap which are shared by more than one vertex
topology / tp int ../../../_images/create.gif ../../../_images/query.gif
  0(off) 1(non triangulatable) 2(lamina) 3(non triangulatable and lamina)
type / t int ../../../_images/create.gif ../../../_images/query.gif
  0x0000(none) 0x0001(vertex) 0x8000(edge) 0x0008(face) 0x0010(texture coordinates)
uvBorderSelection / ubs bool ../../../_images/create.gif ../../../_images/query.gif
  This flag only works on UV viewIf true, selection will be extended to all UV border components It also removes all components not on UV border from the existing selection
uvConstraint / uvc bool ../../../_images/create.gif
  If true, applicable constraint flags will work on UV view. In query mode, this flag can accept a value.
uvEdgeLoopPropagation / ulp bool ../../../_images/create.gif ../../../_images/query.gif
  Use -uvConstraint trueto edit/query UV view constraint.If true, UV edge selection will be extended to a loop.
uvEdgeRingPropagation / urp bool ../../../_images/create.gif ../../../_images/query.gif
  This flag only works on UV viewIf true, UV edge selection will be extended to a ring.
uvFaceOrientation / ufo int ../../../_images/create.gif ../../../_images/query.gif
  This flag only works on UV view0(Off) 1(Front Face) 2(Back Face).
uvShell / uv bool ../../../_images/create.gif ../../../_images/query.gif
  If true, selection will be extended to all connected components in UV space
visibility / v int ../../../_images/create.gif ../../../_images/query.gif
  0(off) 1(on).
visibilityangle / va float ../../../_images/create.gif ../../../_images/query.gif
  angle [0,360].
visibilitypoint / vp float, float, float ../../../_images/create.gif ../../../_images/query.gif
  point.
where / w int ../../../_images/create.gif ../../../_images/query.gif
  0(off) 1(on border) 2(inside).
wholeSensitive / ws bool ../../../_images/create.gif ../../../_images/query.gif
  Tells how to select faces : either by picking anywhere inside the face (if true) or by picking on the face center marker (if false). Flag can have multiple arguments, passed either as a tuple or a list.

Derived from mel command maya.cmds.polySelectConstraint

Example:

import pymel.core as pm

pm.selectMode( co=True )

# "b"Propagation"/b"

pm.polyPlane( n='plg', w=5, h=5 )
pm.delete( 'plg.f[20:29]' )
pm.selectType( pf=True )
pm.polySelectConstraint( sh=True ) # next mouse selections will propagate to all shell
pm.polySelectConstraint( sh=False )
pm.polySelectConstraint( bo=True ) # next mouse selections will propagate along border
pm.polySelectConstraint( bo=False )
pm.polySelectConstraint( cr=True ) # next mouse selections will propagate to all connected creased components
pm.polySelectConstraint( cr=False )

pm.select( 'plg.f[54:55]' )
pm.polySelectConstraint( pp=1 )
pm.polySelectConstraint( pp=1 ) # to get more and more
pm.polySelectConstraint( pp=1 )
pm.polySelectConstraint( pp=2 ) # to get less
pm.polySelectConstraint( pp=3 ) # to get selection border
pm.delete( 'plg' )

#"b"Properties"/b"

#location
pm.polyPlane( n='plg', w=5, h=5 )
pm.selectType( pv=True )
pm.polySelectConstraint( m=3, t=1, w=1 ) # to get border vertices
pm.polySelectConstraint( m=3, t=1, w=2 ) # to get inner vertices
pm.polySelectConstraint( w=0 ) # turn off location constraint
pm.delete( 'plg' )

#edge smoothness
pm.polyCylinder( n='plg' )
pm.selectType( pe=True )
pm.polySelectConstraint( m=3, t=0x8000, sm=1 ) # to get hard edges
pm.polySelectConstraint( m=3, t=0x8000, sm=2 ) # to get soft edges
pm.polySelectConstraint( sm=0 ) # turn off edge smoothness constraint
pm.delete( 'plg' )

#face size
pm.polyCylinder( n='plg', sz=1 )
pm.delete( 'plg.f[40:59]' )
pm.polyCloseBorder( 'plg.e[27]' )
pm.selectType( pf=True )
pm.polySelectConstraint( m=3, t=8, sz=1 ) # to get triangles
pm.polySelectConstraint( m=3, t=8, sz=2 ) # to get quads
pm.polySelectConstraint( m=3, t=8, sz=3 ) # to get N-sided
pm.polySelectConstraint( sz=0 ) # turn off face size constraint
pm.delete( 'plg' )

#face planarity
#    polyPlane -n plg -w 5 -h 5; polyMoveVertex -ltz 1 plg.vtx[79] plg.vtx[85];
pm.selectType( pf=True )
pm.polySelectConstraint( m=3, t=8, p=1 ) # to get non-planar faces
pm.polySelectConstraint( m=3, t=8, p=2 ) # to get planar faces
pm.polySelectConstraint( p=0 ) # turn off face planarity constraint
pm.delete( 'plg' )

#face convexity
pm.polyPlane( n='plg', w=5, h=5 )
pm.delete( 'plg.f[51]', 'plg.f[61]', 'plg.f[52:53]' )
pm.polyCloseBorder( 'plg.e[146]' )
pm.selectType( pf=True )
pm.polySelectConstraint( m=3, t=8, c=1 )# to get non-convex faces
pm.polySelectConstraint( m=3, t=8, c=2 )# to get convex faces
pm.polySelectConstraint( c=0 )#  turn off face convexity constraint
pm.delete( 'plg' )

#face holes
pm.polyCreateFacet( n='plg', p=[(-2, 2, 0), (-2, -2, 0), (2, -2, 0), (2, 2, 0)] )
pm.polyAppend( a=[2, (6, -2, 0), (6, 2, 0), (), (3, 1, 0), (3, -1, 0), (5, 0, 0)] )
pm.selectType( pf=True )
pm.polySelectConstraint( m=3, t=8, h=1 )# to get holed faces
pm.polySelectConstraint( m=3, t=8, h=2 )# to get non-holed faces
pm.polySelectConstraint( h=0 )# turn off hole constraint
pm.delete( 'plg' )

#face mapping
pm.polyPlane( n='plg', w=5, h=5 )
pm.polyMapDel( 'plg.f[60:69]' )
pm.selectType( pf=True )
pm.polySelectConstraint( m=3, t=8, tx=1 ) # to get mapped faces
pm.polySelectConstraint( m=3, t=8, tx=2 ) # to get non-mapped faces
pm.polySelectConstraint( tx=0 ) # turn off face mapping constraint
pm.delete( 'plg' )

#face topology
pm.polyCreateFacet( n='plg', p=((-3, 3, 0),(-3, -3, 0),(3, -3, 0),(3, 3, 0)) )
pm.polyAppend( a= [2, (8, -3, 0), (8, 3, 0)] )
pm.polyAppend( a= (4, 6, 5 ) )
pm.polyAppend( a =[0, (-7, 2, 0),(-7, -1, 0),(-8, 2, 0),(-5, 4, 0)] )
pm.selectType( pf=True)
pm.polySelectConstraint( m=3, t=8, tp=1 ) # to get non triangulatable faces
pm.polySelectConstraint( m=3, t=8, tp=2 ) # to get lamina faces
pm.polySelectConstraint( tp=0 ) # turn off the face topology constraint
pm.delete( 'plg' )

#"b"Length"/b"
pm.polyCylinder( n='plg', sz=1, h=3 )
pm.selectType( pe=True )
pm.polySelectConstraint( m=3, t=0x8000, l=True, lb=(2, 4) ) # to get edges of length 2 to 4 units
pm.polySelectConstraint( m=3, t=0x8000, l=True, lb=(1, 2) ) # to get edges of length 1 to 2 units
pm.polySelectConstraint( l=False ) # turn off the length constraint
pm.delete( 'plg' )

#"b"Angle"/b"
pm.polyCube( n='plg', w=5, h=5, d=5 )
pm.polyBevel( 'plg.e[7]', sg=1 )
pm.polyBevel( 'plg.e[9]', sg=3 )
pm.selectType( pe=True )
pm.polySelectConstraint( m=3, t=0x8000, a=True, ab=(0, 89) ) # to get edges with angle between 0-89
pm.polySelectConstraint( m=3, t=0x8000, a=True, ab=(45, 89) ) # to get edges with angle between 45-89
pm.polySelectConstraint( a=False ) # turn off angle constraint
pm.delete( 'plg' )

#"b"3D Area"/b"
pm.polyPlane( n='plg', w=5, h=5 )
pm.polyMoveFacet( 'plg.f[70:79]', ls=(.5, .5, 0) )
pm.selectType( pf=True )
pm.polySelectConstraint( m=3, t=8, ga=True, gab=(0, 0.2) ) # to get faces with area between 0 and 0.2
pm.polySelectConstraint( m=3, t=8, ga=True, gab=(0.2, 0.3) ) # to get faces with area between 0 and 0.2
pm.polySelectConstraint( ga=False ) # turn off 3D area constraint
pm.delete( 'plg' )

#"b"2D area"/b"
pm.polyCylinder( n='plg' )
pm.selectType( pf=True )
pm.polySelectConstraint( m=3, t=8, ta=True, tab=(0, 0.5) ) # to get face with texture area between 0-0.5
pm.polySelectConstraint( ta=True ) # turn off the 2D area constraint
pm.delete( 'plg' )

#"b"Distance"/b"
pm.polyPlane( n='plg', w=5, h=5 )
pm.selectType( pv=True )
pm.polySelectConstraint( m=3, t=1, d=1, db=(0, 5), dp=(5, 0, 0) ) # to get vertices located
# between 0-5 units from a given point
pm.polySelectConstraint( m=3, t=1, d=1, db=(5, 5), dp=(5, 0, 0) ) # to get vertices located
# at exactly 5 units from a given point
pm.polySelectConstraint( m=3, t=1, d=2, db=(5, 6), dp=(5, 0, 0) ) # to get vertices located
# between 5-6 units from a given axis
pm.polySelectConstraint( d=0 )# turn off the distance constraint
pm.delete( 'plg' )

#"b"Orientation"/b"
pm.polySphere( n='plg' )
pm.selectType( pv=True' )
pm.polySelectConstraint( m=3, t=1, o=1, ob=(0, 30), oa=(0, 1, 0) )# to get vertices oriented between
# 0-30 degree to a given axis
pm.polySelectConstraint( m=3, t=1, o=2, ob=(0, 30), oa=(0, 1, 0) )
pm.polySelectConstraint( o=0 )# turn off the orintation constraint
pm.delete( 'plg' )

#"b"Order (Neighbor)"/b"
pm.polyPlane( n='plg', w=5, h=5 )
pm.selectType( pv=True )
pm.polySelectConstraint( m=3, t=1, order=True, orb=(0, 2) ) # to get vertices with 0 to 2 neighbors
pm.polySelectConstraint( order=False ) # turn off the order (neighbor) constraint
pm.delete( 'plg' )

#"b"Visibility"/b"
pm.polySphere( n='plg' )
pm.selectType( pv=True )
pm.polySelectConstraint( m=3, t=1, v=True, va=60, vp=(10, 0, 0) ) # to get vertices in the 60 degree angle from a given point
pm.polySelectConstraint( v=False ) # turn off the visbility constraint
pm.delete( 'plg' )

#"b"Random"/b"
pm.polyPlane( n='plg', w=5, h=5 )
pm.selectType( pv=True )
pm.polySelectConstraint( m=3, t=1, r=True, rr=.5 )
pm.polySelectConstraint( r= False ) # turn off the random constraint
pm.delete( 'plg' )

# NOTE: Make sure you turn off the constraint you have used. Otherwise it may
# affect your next selection (if "i"mode"/i" flag is ON).