pymel.core.modeling.polyCut¶
- polyCut(*args, **kwargs)¶
This command splits a mesh, or a set of poly faces, along a plane. The position and orientation of the plane can be adjusted using the appropriate flags listed above. In addition, the cut operation can also delete the faces lying on one side of the cutting plane, or extract those faces by an offset amount.
Flags:
Long Name / Short Name Argument Types Properties caching / cch bool Toggle caching for all attributes so that no recomputation is needed. constructionHistory / ch bool Turn the construction history on or off (where applicable). If construction history is on then the corresponding node will be inserted into the history chain for the mesh. If construction history is off then the operation will be performed directly on the object. Note:If the object already has construction history then this flag is ignored and the node will always be inserted into the history chain. cutPlaneCenter / pc float, float, float This flag specifies the position of the cutting plane. cutPlaneCenterX / pcx float This flag specifies the X position of the cutting plane. cutPlaneCenterY / pcy float This flag specifies the Y position of the cutting plane. cutPlaneCenterZ / pcz float This flag specifies the Z position of the cutting plane. cutPlaneHeight / ph float This flag specifies the height of the cutting plane. This is used only for displaying the manipulator, and has no effect on the cut operation. cutPlaneRotate / ro float, float, float This flag specifies the orientation of the cutting plane. cutPlaneRotateX / rx float This flag specifies the X rotation of the cutting plane. cutPlaneRotateY / ry float This flag specifies the Y rotation of the cutting plane. cutPlaneRotateZ / rz float This flag specifies the Z rotation of the cutting plane. cutPlaneSize / ps float, float This flag specifies the size of the cutting plane. This is used only for displaying the manipulator, and has no effect on the cut operation. cutPlaneWidth / pw float This flag specifies the width of the cutting plane. This is used only for displaying the manipulator, and has no effect on the cut operation. cuttingDirection / cd unicode This flag specifies the direction of the cutting plane. Valid values are x, y, zA value of xwill cut the object along the YZ plane cutting through the center of the bounding box. A value of ywill cut the object along the ZX plane cutting through the center of the bounding box. A value of zwill cut the object along the XY plane cutting through the center of the bounding box. deleteFaces / df bool This flag specifies if the cut faces should be deleted or not. extractFaces / ef bool This flag specifies if the cut faces should be extracted or not. extractOffset / eo float, float, float This flag specifies the offset by which the cut faces will be extracted. This flag has no effect when the extractFacesis turned off. extractOffsetX / eox float This flag specifies the offset in X by which the cut faces will be extracted. This flag has no effect when the extractFacesis turned off. extractOffsetY / eoy float This flag specifies the offset in Y by which the cut faces will be extracted. This flag has no effect when the extractFacesis turned off. extractOffsetZ / eoz float This flag specifies the offset in Z by which the cut faces will be extracted. This flag has no effect when the extractFacesis turned off. frozen / fzn bool name / n unicode Give a name to the resulting node. nodeState / nds int Defines how to evaluate the node. 0: Normal1: PassThrough2: Blocking3: Internally disabled. Will return to Normal state when enabled4: Internally disabled. Will return to PassThrough state when enabled5: Internally disabled. Will return to Blocking state when enabledFlag can have multiple arguments, passed either as a tuple or a list. onObject / oo bool worldSpace / ws bool This flag is ignored. polyCut command always works on worldSpace. Common flags Derived from mel command maya.cmds.polyCut
Example:
import pymel.core as pm # Introduce new edges at the middle of a cylinder # pm.polyCylinder( r=1, h=2, sx=20, sy=1, sz=1, ax=(0, 1, 0), cuv=1, ch=1, name='pCylA' ) pm.polyCut( 'pCylA.f[0:59]', cd='Y', ch=1 ) # Delete the bottom half of the cylinder # pm.select( cl=True ) pm.polyCylinder( r=1, h=2, sx=20, sy=1, sz=1, ax=(0, 1, 0), cuv=1, ch=1, name='pCylB' ) pm.move( 3, 0, 0, r=True ) pm.polyCut( 'pCylB.f[0:59]', cd='Y', df=1, ch=1 ) pm.select( cl=True ) # Split the bottom half of the cylinder # pm.select( cl=True ) pm.polyCylinder( r=1, h=2, sx=20, sy=1, sz=1, ax=(0, 1, 0), cuv=1, ch=1, name='pCylC' ) pm.move( 6, 0, 0, r=True ) pm.polyCut( 'pCylC.f[0:59]', cd='Y', ef=1, ch=1 ) # select one of the cylinders, and select the polyCut node from the # channel box, and enter the showManipulator Tool, on the Toolbar. # You can interactively place the cutting plane, and the result of # cut operation will adjust accordingly.