как запустить несколько defs () - Python MAYA? - PullRequest
0 голосов
/ 12 апреля 2020

Я следую инструкции Python для Maya из: https://github.com/gyassa4/MayaPyth/blob/master/gear_builder.py После запуска кода запускается только первый def (), который создает Gear с зубцами = 10. Тем не менее, он не будет запускать второй def (), который изменяет количество зубьев шестерен, как указано в def changeTeeth (constructor, extrude, tooth = 25, length = 1). Мне нужен класс для запуска нескольких defs () ?

import maya.cmds as cmds

def createGear(teeth=10, length=1):
    spans = teeth * 2
    transform, constructor = cmds.polyPipe(subdivisionsAxis=spans)
    sideFaces = range(spans * 2, spans * 3, 2)
    cmds.select(clear=True)
    for face in sideFaces:
        cmds.select('%s.f[%s]' % (transform, face), add = True)
        extrude = cmds.polyExtrudeFacet(localTranslateZ = length)[0]
    return transform, constructor, extrude

createGear()

def changeTeeth(constructor, extrude, teeth=25, length=1):
    spans = teeth * 3
    cmds.polyPipe(constructor, edit=True, subdivisionsAxis=spans)
    sideFaces = range(spans * 2, spans * 3, 5)
    faceNames = []
    for face in sideFaces:
        faceName = 'f[%s]' % (face)
        faceNames.append(faceName)
        cmds.setAttr('%s.inputComponents' % (extrude),
        len(faceNames),*faceNames,type="componentList")
        cmds.polyExtrudeFacet(contructor, extrude, edit=True, ltz=length)

1 Ответ

1 голос
/ 12 апреля 2020
createGear()

выполняется первый def

changeTeeth(constructor = "objname",
            extrude = "extrudename")

поставить в конце, запустить второй. Обратите внимание, что два аргумента являются обязательными, так как вы присвоили значения по умолчанию для:

teeth=25, length=1
...