Alternar modo de raio-X no Maya usando Python

Sep 12 2020

Estou tentando vincular algum código Python a uma chave para poder alternar o modo de raio-X no Maya.

Uma coisa que me confunde é que quando executo esta linha de código ...

def xrayQuery():
    cmds.modelEditor('modelPanel4', q=True, xr=True)

xrayQuery()

nenhum resultado é retornado, embora eu tenha consultado o modo de raio x. Mas quando eu executo apenas o comando sem a função ...

cmds.modelEditor('modelPanel4', q=True, xr=True)

Recebo o que esperava da primeira vez, que é um resultado booleano baseado na ativação ou não do modo de raio x. Alguém pode me dizer por que isso acontece?

Eu sou muito novo em python dentro do Maya, então qualquer ajuda será muito apreciada! Obrigado!

Respostas

2 sam Sep 11 2020 at 23:26

Você precisa chamar return se quiser que a função definida pelo usuário retorne a mesma saída que foi chamada internamente. Como abaixo:

def xrayQuery():
    return cmds.modelEditor('modelPanel4', q=True, xr=True)

Em uma nota lateral, se você pudesse explicar o propósito de escrever uma função em vez de chamar a função original, seria útil entender o caso de uso

user14261562 Sep 12 2020 at 02:59

Então, descobri uma maneira de simplificar o que estava tentando alcançar, que eram algumas linhas de código para ativar e desativar o modo de visualização de raio-x para uma janela de visualização específica. Consegui eliminar a necessidade de instruções if else usando o operador 'not' neste bloco de código:

import maya.cmds as cmds

def xray_toggle():
    result = cmds.modelEditor('modelPanel4', q=True, xr=True)
    cmds.modelEditor('modelPanel4', e=True, xr=not result)

xray_toggle()