Интересно, что при создании примитивов их возвращаемые значения согласованы. Они всегда возвращают преобразование и форму, например:
cmds.polyCube()
# Result: [u'pCube1', u'polyCube1'] #
cmds.polyCone()
# Result: [u'pCone1', u'polyCone1'] #
cmds.polySphere()
# Result: [u'pSphere1', u'polySphere1'] #
И, к счастью, в каждом атрибуте деления есть слово "subdivision"
, поэтому мы можем установить случайное значение для любого атрибута, содержащего это слово.
Зная это, мы можем выбрать случайный примитив для создания, а затем перебрать атрибуты его фигуры, чтобы установить случайное подразделение:
import random
import maya.cmds as cmds
# Define a list of all primitive functions we can create from.
primitives = [cmds.polySphere, cmds.polyCube, cmds.polyCylinder, cmds.polyCone, cmds.polyTorus, cmds.polyPlane]
# Pick a random primitive and create it.
mesh_type = random.choice(primitives)
transform, shape = mesh_type()
# Set a random value on any attribute that has subdivision in its name.
attrs = cmds.listAttr(shape, keyable=True)
for attr in attrs:
if "subdivision" in attr:
cmds.setAttr(shape + "." + attr, random.randrange(10, 100))