Как выполнить поэлементное родительское ограничение двух списков? - PullRequest
0 голосов
/ 25 июня 2019

Я пытаюсь создать родительское ограничение между элементами в двух списках следующим образом:

    import maya.cmds as mc
    objCtl= mc.ls('red_ctl', 'green_ctl', 'blue_ctl')
    objJt= mc.ls('red_jt', 'green_jt', 'blue_jt')

    for item in objCtl:
        ctl= item
        makeParentCons= mc.parentConstraint(ctl, objJt, mo=True, w=1)

Я получаю parentConstraint с несколькими драйверами для каждого соединения.Я знаю, что мне приходится перебирать списки, но я просто не знаю, как это сделать.Я пытался с zip (), добавить

1 Ответ

0 голосов
/ 26 июня 2019

У меня нет ни опыта Maya, ни доступного программного обеспечения. Однако, насколько я понял ваш вопрос (с некоторыми предположениями) и после просмотра документации Maya для команды ls и parentConstraint команда , кажется, вам нужно сгенерировать пары элементов из обоих списков, чтобы создать ограничение между этими двумя элементами.

Команда ls Maya , кажется, возвращает list элементов, а parentConstraint принимает несколько аргументов (по крайней мере, два элемента / объекта и некоторые дополнительные параметры конфигурации) для создать ограничение между заданными элементами.

Итак, отступая на шаг назад и абстрагируя проблему от вещей, связанных с Maya, до «чистого Python», вы в основном хотите получить пары из списков и передать каждую пару другой функции. В общем случае это можно сделать так:

#!/usr/bin/env python3
# -*- coding: utf-8 -*-

# define sample data, using tuples here, but can be lists as well
# needs to be adopted to the mc.ls() command
objCtl = ('red_ctl', 'green_ctl', 'blue_ctl')
objJt = ('red_jt', 'green_jt', 'blue_jt')

# generate element-wise pairs using zip()
pairs = zip(objCtl, objJt)

# iterate through zip-object and print elements of each pair
# print() needs to be changed to the `mc.parentConstraint()` command
for ctl, jt in pairs:
    print(ctl, jt)

Вывод этого фрагмента, приведенного выше:

red_ctl red_jt
green_ctl green_jt
blue_ctl blue_jt

и должен быть пригоден для принятия ограничения.

...