Activer / désactiver le mode Rayons X dans Maya à l'aide de Python

Sep 12 2020

J'essaie de lier du code Python à une clé afin de pouvoir basculer le mode X-Ray dans Maya.

Une chose qui me déroute, c'est que lorsque j'exécute cette ligne de code ...

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

xrayQuery()

aucun résultat n'est retourné, même si j'ai interrogé le mode xray. Mais quand je lance juste la commande sans la fonction ...

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

J'obtiens ce que j'attendais la première fois, qui est un résultat booléen basé sur l'activation ou non du mode xray. Quelqu'un peut-il me dire pourquoi?

Je suis très nouveau dans Python dans Maya, donc toute aide sera très appréciée! Merci!

Réponses

2 sam Sep 11 2020 at 23:26

Vous devez appeler return si vous souhaitez que la fonction définie par l'utilisateur renvoie la même sortie que celle appelée à l'intérieur. Comme ci-dessous:

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

En passant, si vous pouviez expliquer le but d'écrire une fonction au lieu d'appeler la fonction d'origine, il serait utile de comprendre le cas d'utilisation

user14261562 Sep 12 2020 at 02:59

J'ai donc trouvé un moyen de simplifier ce que j'essayais de réaliser, à savoir quelques lignes de code pour activer et désactiver le mode de vue aux rayons X pour une fenêtre spécifique. J'ai pu éliminer le besoin d'instructions if else en utilisant l'opérateur 'not' dans ce bloc de code:

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()