Как показать / скрыть элементы (?) В активном представлении Maya с Python? - PullRequest
0 голосов
/ 23 ноября 2018

Теперь я знаю, как скрыть все кривые нурб в активном окне просмотра.Но как я могу сделать то же самое для всех элементов меню отображения в области просмотра, таких как камеры, манипулятор, сетка и т. Д. Одновременно?

Я думаю, что для этого мне нужно использовать цикл for, но мне нужно руководство.Спасибо.

import maya.cmds as cmds

actView = cmds.getPanel(wf=True)

if cmds.modelEditor(actView, q=True, nurbsCurves=True) == 1:
    cmds.modelEditor(actView, e=True, nurbsCurves=False)

1 Ответ

0 голосов
/ 23 ноября 2018

вот способ скрыть все:

actView = cmds.getPanel(wf=True) # actView='modelPanel4'
# list the flag we use to hide, not that alo hide nearly everything
hide_attrs = ['alo', 'manipulators', 'grid', 'hud', 'hos', 'sel']
# value is used to make visible or to hide (0 is for hiding)
value = 0
# flags is used to create a dictionary that will be used in the command to do : manipulators = 0
flags = { i : value for i in hide_attrs }
# the double star unpack a python dictionnary the key = value, i.e in this case : alo = 0, hud = 0....
cmds.modelEditor(actView, e=1, **flags)

, если вы хотите быть более конкретным, вы можете создать другой словарь для видимых атрибутов

# merge dictionnaries
def merge_two_dicts(x, y):
    # In Python 3.5 or greater, : z = {**x, **y}
    # or w = {'foo': 'bar', 'baz': 'qux', **y}

    z = x.copy()  # start with x's keys and values
    z.update(y)  # modifies z with y's keys and values & returns None
    return z

actView = cmds.getPanel(wf=True) # actView='modelPanel4'
hide_attrs = ['alo', 'manipulators', 'grid', 'hud', 'hos']
vis_attrs = ['sel']
hide_flags = { i : 0 for i in hide_attrs }
vis_flags = { i : 1 for i in vis_attrs }
flags = merge_two_dicts(hide_flags, vis_flags)
cmds.modelEditor(actView, e=1, **flags)

, но на вашем местеЯ бы просто заключил это в один def:

def set_actviewVis(value, attrs=list):
    actView = cmds.getPanel(wf=True) # actView='modelPanel4'    
    flags = { i : value for i in attrs }
    cmds.modelEditor(actView, e=1, **flags)

hide_attrs = ['alo', 'manipulators', 'grid', 'hud', 'hos']
set_actviewVis(0, hide_attrs)
vis_attrs = ['sel']
set_actviewVis(1, vis_attrs)
...