большую часть времени возвращается Майя результаты команд в виде списков строк. Они являются строками unicode (u'xxx '), но это нормально. Майя принимает эти взаимозаменяемые строки с регулярными строками: вы можете спокойно игнорировать Unicode-строку строк, и вам не нужно уходить с пути, чтобы сделать свои собственные строки в Юникод. Майя будет обрабатывать ['xxx']
и [u'xxx']
взаимозаменяемо.
Выбор граней поддерживает несколько форм:
#lists
my_faces = ['pCube1.f[1]', 'pCube1.f[2]']
cmds.select(my_faces)
# tuples
more_faces = ('pCube1.f[3]', 'pCube1.f[4]')
cmds.select(more_faces, add=True)
# direct selection:
cmds.select('pCube1.f[5]', 'pCube1.f[6]')
Чтобы получить все лица в качестве объекта, который вы можете использовать ярлык
cmds.select('pCube1.f[*]')
или диапазон:
cmds.select('pCube1.f[2:4]')
Майя иногда возвращает сжатые имена, например, pCube1.f[2:4]
. Вы можете разделить их на отдельные предметы с помощью команды filterExpand
:
print cmds.filterExpand('pCube1.f[1:5]', sm=34)
# [u'pCube1.f[1]', u'pCube1.f[2]', u'pCube1.f[3]', u'pCube1.f[4]', u'pCube1.f[5]']
(«см = 34» Майя-говорить «только лица»).
Самая большая вещь, на которую нужно обратить внимание - это команды, которые возвращают None
, где вы ожидаете пустой список. Если вы столкнулись с такими ошибками, как NoneType is not iterable
, это, вероятно, случай майи, возвращающий None
вместо []
. Вы обычно можете выйти из этого, используя «или»:
item = cmds.ls("your_name_here") or []
который возвращает и пустым списком.
Он хранит их в виде строк в Юникоде. Вам нужно предоставить дополнительную информацию (например, код, создающий список), чтобы мы могли помочь вам больше. – Anthony
Правильно, в майа-cmds python api вход и вывод команд обычно представляет собой строку, представляющую (частичный) путь dag объекта. Если вы хотите более объектно-ориентированный подход, вы можете посмотреть на что-то вроде [pymel] (http://help.autodesk.com/cloudhelp/2015/ENU/Maya-Tech-Docs/PyMel/index.html#!). – lemonhead