Alternar el modo de rayos X en Maya usando Python

Sep 12 2020

Estoy tratando de vincular un código Python a una tecla para poder alternar el modo de rayos X en Maya.

Una cosa que me confunde es que cuando ejecuto esta línea de código ...

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

xrayQuery()

no se devuelve ningún resultado, aunque he consultado el modo de rayos x. Pero cuando ejecuto solo el comando sin la función ...

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

Obtengo lo que esperaba la primera vez, que es un resultado booleano basado en si el modo de rayos X está habilitado o no. ¿Alguien puede decirme por qué es esto?

Soy muy nuevo en Python dentro de Maya, ¡así que cualquier ayuda será muy apreciada! ¡Gracias!

Respuestas

2 sam Sep 11 2020 at 23:26

Debe llamar a return si desea que la función definida por el usuario devuelva la misma salida que la llamada dentro. Como abajo:

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

En una nota al margen, si pudiera explicar el propósito de escribir una función en lugar de llamar a la función original, sería útil comprender el caso de uso

user14261562 Sep 12 2020 at 02:59

Así que descubrí una manera de simplificar lo que estaba tratando de lograr, que eran unas pocas líneas de código para activar y desactivar el modo de vista de rayos X para una ventana gráfica específica. Pude eliminar la necesidad de declaraciones if else utilizando el operador 'not' en este bloque 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()