Go to: Synopsis. Return value. Flags. Python examples.
duplicate( [objects...] , [inputConnections=boolean],
[instanceLeaf=boolean],
[name=string], [parentOnly=boolean], [renameChildren=boolean], [returnRootsOnly=boolean],
[smartTransform=boolean],
[upstreamNodes=boolean])
Note: Strings representing object names and
arguments must be separated by commas. This is not depicted in the
synopsis.
duplicate is undoable, NOT queryable, and NOT
editable.
This command duplicates the given objects. If no objects are given,
then the selected list is duplicated. The smart transform feature
allows duplicate to transform newly duplicated objects based on
previous transformations between duplications. Example: Duplicate
an object and move it to a new location. Duplicate it again with
the smart duplicate flag. It should have moved once again the
distance you had previously moved it. Note: changing the selected
list between smart duplications will cause the transform
information to be deleted The upstream Nodes option forces
duplication of all upstream nodes leading upto the selected
objects.. Upstream nodes are defined as all nodes feeding into
selected nodes. During traversal of Dependency graph, if another
dagObject is encountered, then that node and all it's parent
transforms are also duplicated. The inputConnections option forces
the duplication of input connections to the nodes that are to be
duplicated. This is very useful especially in cases where two nodes
that are connected to each other are specified as nodes to be
duplicated. In that situation, the connection between the nodes is
also duplicated. See also: instance
string[] |
: names of the objects created |
inputConnections, instanceLeaf, name,
parentOnly, renameChildren, returnRootsOnly, smartTransform, upstreamNodes
Long name (short name) |
Argument types |
Properties |
name(n) |
string |
|
|
name to give duplicated object(s) |
|
smartTransform(st) |
boolean |
|
|
remembers last transformation and applies it to duplicated
object(s) |
|
upstreamNodes(un) |
boolean |
|
|
the upstream nodes leading upto the selected nodes (along with
their connections) are also duplicated. |
|
inputConnections(ic) |
boolean |
|
|
Input connections to the node to be duplicated, are also
duplicated. This would result in a fan-out scenario as the nodes at
the input side are not duplicated (unlike the -un option). |
|
returnRootsOnly(rr) |
boolean |
|
|
return only the root nodes of the new hierarchy. When used with
upstreamNodes flag, the upstream nodes will be omitted in the
result. This flag controls only what is returned in the output
string[], and it does NOT change the behaviour of the duplicate
command. |
|
renameChildren(rc) |
boolean |
|
|
rename the child nodes of the hierarchy, to make them
unique. |
|
instanceLeaf(ilf) |
boolean |
|
|
instead of duplicating leaf DAG nodes, instance them. |
|
parentOnly(po) |
boolean |
|
|
Duplicate only the specified DAG node and not any of its
children. |
|
Flag can appear in Create mode of
command |
Flag can appear in Edit mode of command |
Flag can appear in Query mode of command |
Flag can have multiple arguments, passed
either as a tuple or a list. |
import maya.cmds as cmds
# Create a hierarchy of two spheres;
cmds.sphere( n='sphere1' )
cmds.move( 3, 0, 0 )
cmds.sphere( n='sphere2' )
cmds.move( -3, 0, 0 )
cmds.group( 'sphere1', 'sphere2', n='group1' )
cmds.circle( n='circle1' )
# Create a duplicate of the group
cmds.duplicate( 'group1' )
# Result: group2 sphere1 sphere2 #
cmds.undo()
cmds.duplicate( 'group1', rr=True )
# Result: group2 #
# Create a row of 4 circles equally spaced using
# the -smartTransform flag.
cmds.duplicate( 'circle1' )
cmds.move( 3, 0, 0 )
cmds.duplicate( st=True )
cmds.duplicate( st=True )
# Duplicate a sphere along with its input connections.
# If animCurves were feeding into original transforms of the
# sphere, they will feed into the duplicated ones also.
# If the sphere has history (in this case it does),
# then the history is connected to the duplicate. Note that
# changing the radius for the makeNurbSphere for the sphere1
# affects the duplicated sphere.
#
cmds.duplicate( 'group1|sphere1', ic=True )
cmds.move( 0, 0, 0 )
cmds.setAttr( 'makeNurbSphere1.radius', 2 )
# Duplicate selected objects along with their upstream nodes
# and connections. This will duplicate the history.
cmds.select( 'group1|sphere2' )
cmds.duplicate( un=True )