Mel / Python - Ventana Creación de Esfera

Hola, en esta oportunidad realizare un ejercicio en el que enviaremos datos a un procedimiento desde una ventana.

El enunciado seria el siguiente:
  1. Se necesita crear una ventana que me permita crear una esfera.
  2. Se debe permitir el ingreso del nombre y el radio de la esfera.
  3. Se debe validar los datos ingresados.
Para resolver el enunciado necesitaremos:
  1. Un procedimiento que evalué los datos:
    • Mel: recibirá el valor de las cajas de texto en dos argumentos ($boxNombre y $boxNum).
    • Python: el procedimiento se encargara de recoger los datos en unas variables (nombre y radio).
  2. Comando If para evaluar los valores.
  3. Comodín && y and para usar rangos en el If para Mel y Python respectivamente.
  4. Comando confirmDialog para mostrar advertencias.
Comenzaremos definiendo el procedimiento "validacion" que recibirá los y/o evaluaran los datos ingresados en la ventana.

Luego crearemos la ventana con dos cajas de texto, nos aseguramos de contener estos elementos en variables para poder acceder de manera más sencilla a sus datos.

El resultado usando Mel seria el siguiente:
  1. proc validacion(string $boxNombre,int $boxNum){

  2.    if (size ($boxNombre)==0){
  3.       confirmDialog -t "Ingrese un nombre" -m "Ingrese el nombre que tendra la esfera" -b "Aceptar";
  4.    }
  5.    else{
  6.       if(($boxNum >= 1) && ($boxNum<100)){
  7.          sphere -n $boxNombre -r $boxNum;
  8.       }
  9.       else{
  10.          confirmDialog -t "Fuera del rango" -m "Escriba un valor númerico entre 1 y 99" -b "Aceptar";
  11.       }
  12.    }
  13. }
  14. $ventana = `window -wh 330 150 -t "Creación de Esfera"`;
  15.     columnLayout -adjustableColumn true;
  16.         text -l "Escribe el nombre de la esfera sin usar espacios en blanco";
  17.         $valorC=`textField -text "Esfera" -width 200`;
  18.         text -l "";//Separador 
  19.         text -l "Escribe el radio que tendrá la esfera. Entre 1 y 99";
  20.         $valorN=`intField -value 1 -width 200`;
  21.         text -l "";//Separador
  22.         button -l "Crear" -c "validacion(`textField -query -text $valorC`,`intField -query -value $valorN`)";
  23. showWindow($ventana);


        Su equivalente en Python seria así:
        1. import maya.cmds as cmds

        2. def validacion():
        3.     nombre=cmds.textField(valorC,q=True,text=True)
        4.     radio=cmds.intField(valorN,q=True,value=True)
        5.     if len(nombre)==0:
        6.         cmds.confirmDialog(t="Ingrese un nombre",m="Ingrese el nombre que tendra la esfera",b="Aceptar")
        7.     else:
        8.         if radio>=1 and radio<100:
        9.             cmds.sphere(n=nombre,r=radio)
        10.         else:
        11.             cmds.confirmDialog(t="Fuera del rango",m="Escriba un valor numérico entre 1 y 99",b="Aceptar")
        12. ventana=cmds.window(t='Creación de Esfera',w=330,h=150,s=False)
        13. cmds.columnLayout(adj=True)
        14. cmds.separator(h=10)
        15. cmds.text(l='Escribe el nombre de la esfera sin usar espacios en blanco')
        16. valorC=cmds.textField(tx='Esfera',w=200)
        17. cmds.separator(h=10)
        18. cmds.text(l='Escribe el radio que tendra la esfera. Entre 1 y 99')
        19. valorN=cmds.intField(v=1,w=200)
        20. cmds.separator(h=30)
        21. cmds.button(l='Crear',w=100,c='validacion()')
        22. cmds.showWindow(ventana)

                El resultado seria un ventana con dos casilleros para ingresar el nombre de la esfera y el radio del mismo.
                Ejemplo de la ventana en la interface de Maya.

                Espero les sea útil esta pequeña demostración del uso de ventanas.
                Un saludo.

                Comentarios