pymel.core.modeling.polyEvaluate¶
- polyEvaluate(*args, **kwargs)¶
Returns the required counts on the specified objects. If no objects are specified in the command line, then the objects from the active list are used. In MEL, the values are returned in the same order as the flags are set. Under Python, there is no concept of argument ordering, so the items are returned in a dictionary keyed by the name of the flag. In Python, if only one item is requested, then it will not be returned in a dictionary. For user convenience, if no flag is set, then all values are echoed. All flags (except -fmt/format) are in fact query-flags. For user convenience, the -q flag may be ommitted. Some comments for non-formatted output :3d bounding boxes are returned as 3 couples of floats, 2d ones as 2 couples of floats.if a bounding box is queried and cannot be computed (for example the component bounding box when no component is selected, or 2d bounding box for and unmapped object) 0 is returned for each array element, so that indices in the output array remain consistent.intvalues (queried by topological flags) cannot be mixed with floatvalues (queried by bounding box flags). Thus if no flag is set, only intvalues are returned.
Flags:
Long Name / Short Name Argument Types Properties accurateEvaluation / ae bool used to get accurate results for the bounding box computation For objects with large vertex counts, accurate evaluation takes more time activeShells / activeShells bool returns the indices of active shells as an array of int activeUVShells / aus bool returns the indices of active UV shells (for the current map if one is not specified) as an array of int area / a bool returns the surface area of the object’s faces in local space as a float boundingBox / b bool returns the object’s bounding box in 3d space as 6 floats in MEL: xmin xmax ymin ymax zmin zmax, or as a tuple of three pairs in Python: ((xmin,xmax), (ymin,ymax), (zmin,zmax)) boundingBox2d / b2 bool returns the object’s uv bounding box (for the current map if one is not specified) in 2d space as 4 floats in MEL : xmin xmax ymin ymax, or as a tuple of three pairs in Python: ((xmin,xmax), (ymin,ymax), (zmin,zmax)) boundingBoxComponent / bc bool returns the bounding box of selected components in 3d space as 6 floats in MEL : xmin xmax ymin ymax zmin zmax, or as a tuple of three pairs in Python: ((xmin,xmax), (ymin,ymax), (zmin,zmax)) boundingBoxComponent2d / bc2 bool returns the bounding box of selected/specified components uv coordinates in 2d space as 4 floats in MEL : xmin xmax ymin ymax, or as a tuple of two pairs in Python: ((xmin,xmax), (ymin,ymax)) displayStats / ds bool toggles the display of poly statistics for the active View. All other flags are ignored if this flag is specified (Obsolete - refer to the headsUpDisplay command) edge / e bool returns the number of edges as an int edgeComponent / ec bool returns the object’s number of selected edges as an int face / f bool returns the number of faces as an int faceArea / fa bool returns the surface area of selected/specified faces in local space as an array of float faceComponent / fc bool returns the object’s number of selected faces as an int format / fmt bool used to display the results as an explicit sentence shell / s bool returns the number of shells (disconnected pieces) as an int triangle / t bool returns the number of triangles as an int triangleComponent / tc bool returns the number of triangles of selected components as an int uvArea / uva bool returns the UV area of the object’s faces in 2d space as a float uvComponent / uvc bool returns the object’s number of selected uv coordinates as an int uvEdgePairs / uep bool returns the pairs of UVs that are on the selected/specified edges uvFaceArea / ufa bool returns the UV area of selected/specified faces in 2d space as an array of float uvSetName / uvs unicode used when querying texture vertices to specify the uv set. If a uv set is not specified then the current map for the object will be used uvShell / us bool returns the number of UV shells (for the current map if one is not specified) as an int uvShellIds / usi bool returns the UV shell indices for selected/specified faces or UVs as an array of int (for the current map if one is not specified), one shell index per each face/UV. uvcoord / uv bool returns the number of uv coordinates (for the current map if one is not specified) as an int uvsInShell / uis int returns all UVs inside specified shell(for the current map if one is not specified), use activeUVShells to get shell indices for current selection, use uvShellIds to get shell indices for specified faces or UVs vertex / v bool returns the number of vertices as an int vertexComponent / vc bool returns the object’s number of selected vertices as an int worldArea / wa bool returns the surface area of the object’s faces in world space as a float worldFaceArea / wfa bool returns the surface area of selected/specified faces in world space as an array of float Flag can have multiple arguments, passed either as a tuple or a list. Derived from mel command maya.cmds.polyEvaluate
Example:
import pymel.core as pm pm.polyPlane( n='plg', sx=4, sy=4, w=5, h=5 ) pm.select( 'plg.f[2]', 'plg.f[4]' ) # query the number of faces pm.polyEvaluate( f=True ) # Result: 16 # query the number of triangles pm.polyEvaluate( t=True ) # Result: 32 # query the number of selected faces pm.polyEvaluate( faceComponent=True ) # Result: 2 # query the number of vertices and faces pm.polyEvaluate( v=True, f=True ) # Result: {'vertex': 25, 'face': 16} # formatted query of the number of vertices and faces pm.polyEvaluate( v=True, f=True, fmt=True ) # Result: "face=16 vertex=25" # query all pm.polyEvaluate() # Result: {'vertexComponent': 0, 'shell': 1, 'triangle': 32, 'faceComponent': 2, 'vertex': 25, 'face': 16, 'triangleComponent': 0, 'edge': 40, 'uvcoord': 25, 'uvComponent': 0, 'edgeComponent': 0} #formatted query of all information pm.polyEvaluate( fmt=True ) # Result: vertex=25 edge=40 face=16 uvcoord=25 triangle=32 shell=1 # vertexComponent=0 edgeComponent=0 faceComponent=2 uvComponent=0 # boundingBox= X[-2.50,2.50] Y[0.00,0.00] Z[-2.50,2.50] # boundingBoxComponent= X[-2.50,1.25] Y[0.00,0.00] Z[0.00,2.50] # boundingBox2d= U[0.00,1.00] V[0.00,1.00] # boundingBoxComponent2d= U[0.00,0.75] V[0.00,0.50] # area=25.00 worldArea=25.00 # accurate bounding box evaluation pm.polyCylinder( r=1, h=2, sx=20, sy=1, sz=1, ax=(0, 1, 0), tx=1, ch=1 ) pCylinder1 polyCylinder1 pm.rotate( 38.340875, 0, 0, r=True, os=True ) pm.rotate( 0, 0, -36.177835, r=True, os=True ) pm.polyEvaluate( b=True ) ((-1.3974823703620598, 1.39748217791327), (-1.7164316223605844, -1.7164316223605844), (-1.6512467204212007, 1.6512465272260637)) pm.polyEvaluate( b=True, ae=True ) ((-1.3974823951721191, 1.39748215675354), (-1.4071073532104492, -1.4071073532104492), (-1.3598332405090332, 1.3598330020904541)) # Local and World Space Area pm.polyCube( w=1, h=1, d=1, sx=1, sy=1, sz=1, ax=(0, 0, 1), cuv=1, ch=1 ) pm.setAttr( 'pCube1.scaleY', 2 ) pm.polyEvaluate( a=True ) # Result: 6 pm.polyEvaluate( wa=True ) # Result: 10