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 0(off) 1(on). anglePropagation / ap bool 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 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 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 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 If true, selection will be extended to all connected border components so that the whole loopis selected. convexity / c int 0(off) 1(concave) 2(convex). crease / cr bool If true, selection will be extended to all connected creased components. disable / dis bool 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 0(off) 1(to point) 2(to axis) 3(to plane). distaxis / da float, float, float axis. (Normal to the plane in case of distance to plane). distbound / db float, float min and max distances. distpoint / dp float, float, float point. (Axis/plane origin in case of distance to axis/plane). edgeDistance / ed int Maximum distance (number of edges) to extend the edge selection for Contiguous Edgespropagate mode. 0 means to ignore the distance constraint. geometricarea / ga int 0(off) 1(on). geometricareabound / gab float, float min and max areas. holes / h int 0(off) 1(holed) 2(non holed). length / l int 0(off) 1(on). lengthbound / lb float, float min and max lengths. loopPropagation / lp bool If true, edge selection will be extended to a loop. max2dAngle / m2a float Maximum angle between two consecutive edges in the 2d tangent plane for Contiguous Edgespropagate mode. max3dAngle / m3a float Maximum angle between two consecutive edges in 3d space for Contiguous Edgespropagate mode. mode / m int 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 0(off) 1(on) oppositeEdges / oe bool order / order int 0(off) 1(on). orderbound / orb int, int min and max orders. number of owning edges. orient / o int 0(off) 1(orientation) 2(direction). orientaxis / oa float, float, float axis. orientbound / ob float, float 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 0(off) 1(non planar) 2(planar). propagate / pp int 0(Off) 1(More) 2(Less) 3(Border) 4(Contiguous Edges). 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. random / r int 0(off) 1(on). randomratio / rr float ratio [0,1]. returnSelection / rs bool If true, current selection will not be modified, instead the new selection will be returned as result. ringPropagation / rp bool If true, edge selection will be extended to a ring. shell / sh bool If true, selection will be extended to all connected components so that the whole piece of object is selected. size / sz int 0(off) 1(triangles) 2(quads) 3(nsided). smoothness / sm int 0(off) 1(hard) 2(smooth). stateString / sts bool Query only flag. Returns the MEL command that would restore all the current settings. textured / tx int 0(off) 1(mapped) 2(unmapped). texturedarea / ta int 0(off) 1(Area specified is unsigned) 2(Area specified is signed). texturedareabound / tab float, float min and max areas. textureshared / ts int 0(off) 1(on). This option will select any uvs on the currentMap which are shared by more than one vertex topology / tp int 0(off) 1(non triangulatable) 2(lamina) 3(non triangulatable and lamina) type / t int 0x0000(none) 0x0001(vertex) 0x8000(edge) 0x0008(face) 0x0010(texture coordinates) uvShell / uv bool If true, selection will be extended to all connected components in UV space visibility / v int 0(off) 1(on). visibilityangle / va float angle [0,360]. visibilitypoint / vp float, float, float point. where / w int 0(off) 1(on border) 2(inside). wholeSensitive / ws bool 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).