Resultados 1 al 11 de 11

Tema: Declarar función dentro de botones de forma dinámica

  1. #1
    Fecha de ingreso
    Mar 2004
    Mensajes
    3,685

    3dsmax [maxscript] re-decalarar función dentro de botones de forma dinámica?

    Hola, estoy haciendo un script que hace una serie de acciones y como resultado final agrega ciertos controles a un attribute holder, entre esos controles hay varios botones que comparten funciones entre sí, estas funciones están declaradas en el script generador, pero para que luego funcionen con la UI necesito declararla en cada botón y ahí reside mi inquietud, se puede declarar esa función, pero sin reescribirla/copiarla manualmente en cada botón?
    No es el caso, pero quizás sirve para explicar lo que me gustaría lograr, en XSI se pasan las funciones para los botones como string (toda la declaración) y existen funciones como el tostring (jscript) que justamente retorna la declaración de una función como string sin necesidad de reescribirla, en el fondo queda reescrita, pero es dinámico. Busco algo como eso, pero bajo el contexto de Maxscript, existe alguna forma?
    Pensé que una alternativa sería usar un macro script para cada función compartida, en teoría debería funcionar, pero me gustaría que para usar el resultado final del script no fuera necesario tener instalado nada extra en 3dsmax, son funciones simples y no tendría sentido. Gracias.

  2. #2
    Fecha de ingreso
    Jun 2005
    Mensajes
    16,790

    [maxscript] re-decalarar función dentro de botones de forma dinámica?

    Cesar, tienes todo mi respeto y admiración. Porque no he entendido nada. Y no es porque no te expliques bien.
    Ahora que soy inmensamente rico, me ha dado por aprender Blender

  3. #3
    Fecha de ingreso
    Apr 2002
    Mensajes
    14,651

    [maxscript] re-decalarar función dentro de botones de forma dinámica?

    Así a bote pronto, se me ocurre que tal vez puedas usar la función filein() en cada botón, y que los comandos de cada botón apunten a ese archivo. Es decir, tener un archivo común con todas las funciones necesarias (en un structure, por ejemplo), y que cada botón, después de llamar a ese archivo, ejecute lo que tenga que ejecutar.

    Pero esto ya implica que necesites dicho archivo en la máquina. ¿Qué te traes entre manos?

  4. #4
    Fecha de ingreso
    Sep 2004
    Mensajes
    123

    [maxscript] re-decalarar función dentro de botones de forma dinámica?

    Javascript tostring me parece que es como mxs as string, pero no sabía que se podía hacer eso con funciones en js. Y si quieres interpretar un string como código, seria execute ().

    También podrías guardar funciones/structs en un mismo maxwrapper, y acceder a ellas usando Weak referencias o pathnames.

    Si es que entiendo correctamente.

  5. #5
    Fecha de ingreso
    Mar 2004
    Mensajes
    3,685

    [maxscript] re-decalarar función dentro de botones de forma dinámica?

    Muchas gracias por las respuestas, esto se pone interesante.
    Así a bote pronto, se me ocurre que tal vez puedas usar la función filein() en cada botón, y que los comandos de cada botón apunten a ese archivo. Es decir, tener un archivo común con todas las funciones necesarias (en un structure, por ejemplo), y que cada botón, después de llamar a ese archivo, ejecute lo que tenga que ejecutar.
    No es mala idea, no sabía de esa función y nunca me he puesto con el Struts, lo voy a investigar. Si se pudiera llamar sólo ciertas funciones del archivo importado (tipo Python) podría funcionar, gracias IkerClon.
    Cita Iniciado por oruramuqo Ver mensaje
    javascript tostring me parece que es como mxs as string, pero no sabía que se podía hacer eso con funciones en js.

    Y si quieres interpretar un string como código, seria excute ().

    También podrías guardar funciones/structs en un mismo maxwrapper, y acceder a ellas usando Weak referencias o pathnames.

    Si es que entiendo correctamente.
    Hey, no es mala idea, a ver si entiendo bien:
    Creo un custom attribute y en uno de los parámetros asigno un float script donde guardo mi función, luego con un execute controller, script podría cargar la función desde el botón, me gusta la idea.

    Sólo me queda una duda, existe forma de pasar toda la declaración de la función como string sin reescribirla (por el tema de los caracteres especiales y tal)? Porque el as string hasta ahora sólo he logrado que me exprese el retorno de la función o bien el nombre de la misma.

    De todas formas, escribir la función 1 vez como string en lugar de copiarla por doquier me parece que se acerca mucho a lo que necesito, gracias.
    ____________________________
    Edito: a ver si con un ejemplo nos entendemos mejor.

    Supongamos tengo la función holamundo declarada de la siguiente forma en el script generador.
    Código:
    Fn holamundo =
    (.
    
    Print hola mundo.
    )
    Existe alguna función que retorne la declaración de la función como un string para no tener que escribirla manualmente? Algo así:
    Código:
    Fn holamundo = \n+\.
    (\n+\.
    
    Print \hola mundo.\ \n+\.
    )
    Última edición por Cesar Saez; 16-12-2008 a las 14:35

  6. #6
    Fecha de ingreso
    Sep 2004
    Mensajes
    123

    [maxscript] re-decalarar función dentro de botones de forma dinámica?

    Según te entiendo, quieres que tus funciones estén dentro de max, pero no quieres copiarlas una y otra ve, z.
    Código:
    cat = attributes test.
    
    Redefine:cat.
    (Tfn moder x y=(t val = mod x y return val t)).
    
    Custattributes, add $ Cat
    > es decir, escribes adentro todas tus funciones/structs.
    > luego accedes a ellas así:
    $box02.moder 7. 5.2.
    Código:
    cat = attributes saveme.
    
    Redefine:cat.
    (Tlocal doit tparameters main ut:Mad t(t b1 type:#bolean ui:ub1 t) trollout Mad Mad t(t button ub1 press type:#bolean t on ub1 pressed do (t doit = ($box02.moder 7. 5.2) doit += doit format the val is: %\nDoit ) t)).
    
    Custattributes, add $ Cat
    Edito: leyento tu ejemplo, pues no conozco de nada que retorne un string de esa maner, a, lo único es escribir una función que recre el ut dinámicamente así:
    (ttest = stringstream tformat ut test\nTo:test tformat (\n\t\n)\nTo:test (test as string)).

    En CGtalk, es que vi eso de los stringstream para formatear el string, y luego ejecutarlo usando execute ().
    Última edición por Ruramuq; 16-12-2008 a las 15:01

  7. #7
    Fecha de ingreso
    Mar 2004
    Mensajes
    3,685

    [maxscript] re-decalarar función dentro de botones de forma dinámica?

    Cita Iniciado por oruramuqo Ver mensaje
    según te entiendo, quieres que tus funciones estén dentro de max, pero no quieres copiarlas una y otra ve, z.
    Código:
    cat = attributes test.
    
    Redefine:cat.
    (Tfn moder x y=(t val = mod x y return val t)).
    
    Custattributes, add $ Cat
    > es decir, escribes adentro todas tus funciones/structs.
    > luego accedes a ellas así:
    $box02.moder 7. 5.2.
    Que crack, no sabía que podía definir funciones directamente dentro de un Custom Attributes, muchas gracias.

  8. #8
    Fecha de ingreso
    Apr 2002
    Mensajes
    14,651

    [maxscript] re-decalarar función dentro de botones de forma dinámica?

    Sólo por añadir más información al tema, y complementando lo que cuenta Duramune (por cierto, gracias por la información), puedes definir algo como esto:
    Código:
    Fn test arg1 arg2 =
    (
    Local str = str += attributes attr + arg2 + \r
    Str += (\r
    Str += parameters main ut:main_rlt\r
    Str += (\r
    Str += elemento1 type:#integer ui:elemento1_spn \r
    Str += )\r
    Str += \r
    Str += ut main_rlt \probando + arg2 + \\r
    Str += (\r
    Str += spinner blend_spn \valor\ type:#integer range:[0,100,50] \r
    Str += )\r
    Str += ).
    
    Return (execute str)
    )
    , y luego pasar ese código a un modificador/baseobject mediante:
    Código:
    custattributes, add objeto, modificador (test arg1 arg2)

  9. #9
    Fecha de ingreso
    May 2005
    Mensajes
    321

    [maxscript] re-decalarar función dentro de botones de forma dinámica?

    No puedes declarar la función dentro del ut, pero afuera de los botones?
    Última edición por phoelix; 16-12-2008 a las 22:01
    Nuestro corto basado en Matrix - TRICKSTER - wip:
    thetricksterproject.blogspot.com

    website personal:
    www.joleanes.com

  10. #10
    Fecha de ingreso
    Mar 2004
    Mensajes
    3,685

    [maxscript] re-decalarar función dentro de botones de forma dinámica?

    No puedes declarar la función dentro del ut, pero afuera de los botones?
    El script genera una configuración, pero se ejecuta sólo una vez, luego ya queda todo montado y si la función no está en memoria ningún botón funcionaría.

  11. #11
    Fecha de ingreso
    May 2005
    Mensajes
    321

    [maxscript] re-decalarar función dentro de botones de forma dinámica?

    Si la función esta declarada dentro del ut del custom attribute que vas a asignar, esta quedaría en memoria y disponible para todo script que se ejecute dentro de algún evento del ut o de sus UI controls a partir del momento en el que el custom attribute sea asignado.

    De cualquier forma también puedes declararla por fuera del ut mientras este dentro del custom attribute, así como lo mostró Duramune.
    Última edición por phoelix; 17-12-2008 a las 01:22
    Nuestro corto basado en Matrix - TRICKSTER - wip:
    thetricksterproject.blogspot.com

    website personal:
    www.joleanes.com

Temas similares

  1. Respuestas: 0
    : 30-11-2024, 17:53
  2. 3dsMax Dudas: deformar un cubo y volver a su forma inicial dentro de recorrido
    Por Danicoart en el foro Animación y Rigging
    Respuestas: 4
    : 28-01-2012, 22:16
  3. Comienza la diversion botones y mas botones
    Por FRANK SOLO en el foro Pasatiempos y sugerencias
    Respuestas: 5
    : 17-04-2010, 16:07
  4. Músculos faciales: forma y función
    Por ikerCLoN en el foro Modelado
    Respuestas: 22
    : 21-07-2008, 12:05
  5. La dinámica en 3ds Max
    Por Dai-X en el foro Partículas y Dinámicas
    Respuestas: 3
    : 13-03-2006, 23:00

Etiquetas para este tema