Resultados 1 al 29 de 29

Tutorial maxscript introducción

  1. #1
    Fecha de ingreso
    Apr 2002
    Mensajes
    26,550

    3dsmax Tutorial maxscript introducción

    1- introducción.
    1.1 - descripción general de Maxscript. Maxscript es un lenguaje de alto nivel orientado a objetos y de sintaxis muy sencilla. Está pensado para usuarios de 3d Studio max que no estén familiarizados con la programación. Sus variables son sin tipo y no hay distinción entre mayúsculas y minúsculas.

    Este lenguaje no necesita compilador. Todas las instrucciones se llevan a cabo en tiempo de ejecución.

    Podemos utilizar Maxscript y 3d Studio max al mismo tiempo. Se puede crear un cubo en Maxscript y seguidamente, modificarlo en 3d Studio.

    Algunos ejemplos de utilización de este lenguaje pueden ser:
    • creación de escenas complejas que interactivamente serían demasiado complicadas de llevar a cabo.
    • creación de herramientas de proceso por lotes.
    • generación de funciones nuevas para facilitar una determinada tarea.
    • uso de casi todas las funciones de 3d Studio max.
    • creación de nuevos paneles y ventanas con utilidades para 3d Studio max.

    1.2 - cómo se accede a Maxscript.

    Maxscript se encuentra en el panel de herramientas.

    En este panel hay una persiana de utilidades, y dentro de ella se puede presionar el botón Maxscript.


    Una vez se haya abierto la persiana de Maxscript podremos acceder a las opciones: abrir oyente, guión nuevo, abrir guión, ejecutar guión y cerrar.[*]abrir oyente: abre la ventana oyente de Maxscript. Si pulsamos esta opción y el oyente está minimizado, o escondido detrás de otra ventana, lo restaurara. Si la cierra y la vuelve a abrir, conserva el texto que había antes de cerrarla.

    [*]guión nuevo: abre un editor en una ventana nueva, donde se puede escribir un nuevo guión en Maxscript.[*]abrir guión: al pulsar esta opción se abre un cuadro de diálogo de apertura de archivos en el que el usuario ha de elegir un guión en Maxscript. Una vez escogido el guión se abrirá una ventana editora de Maxscript con el contenido del fichero.[*]ejecutar guión: el usuario escoge un guión en Maxscript y éste se le y se ejecuta. La salida puede verse, dependiendo del tipo de guión, en los visores de 3d Studio max o bien en la ventana oyente de Maxscript.[*]utilidades: muestra las utilidades de guión disponibles.[*]cerrar: cierra la utilidad Maxscript.
    1.3 - utilización del oyente de Maxscript.

    En el oyente se pueden ejecutar comandos y expresiones. Para ejecutarlos, simplemente se escribe el comando o expresión y se pulsa la tecla enter.

    Podemos desplazarnos por el texto del oyente como si fuese un editor normal. También se puede cortar, copiar y pegar el texto seleccionado (Control-x, Control-c, Control-v) y editar nuevos comandos en medio del texto, o modificar los que ya teníamos y después ejecutarlos.

    Para ejecutar comandos en medio del texto, después de editarlos en una línea nueva, se ha de pulsar la tecla enter del teclado numérico, o bien presionar mayúsculas - enter. Los resultados se muestran en la misma ventana, bajo el comando o los comandos ejecutados.

    Es posible ejecutar bloques de código seleccionándolos previamente y pulsando las teclas mayúsculas - enter o bien, presionando enter desde el teclado numérico.

    La instrucción include nombre fichero. Extensión" inserta el contenido del fichero nombre fichero" en el oyente sin ejecutarlo.

    Se puede seleccionar el texto y ejecutarlo por trozos.

    Podemos trabajar con el oyente de Maxscript y con 3d Studio max al mismo tiempo.
    1.4 - variables en Maxscript.

    Las variables se utilizan para almacenar datos que varían durante la ejecución del programa. En Maxscript no es necesario declarar las variables antes de utilizarlas.

    Tenemos dos clases de variables en Maxscript:[*] variables locales:[*] se considerarán variables locales aquellas que se utilicen por primera vez dentro de un bloque o función. En caso contrario, las variables se considerarán globales.[*] sólo son visibles en el bloque o función donde se declaran.[*] su valor se mantiene mientras se está ejecutando la función o el bloque donde se encuentran.[*]variables globales:[*] son visibles en todo el código Maxscript.[*] podemos acceder a ellas desde diferentes utilidades, funciones, etc. Su valor permanece hasta que se sale de 3d Studio max.

    La primera vez que se utiliza una variable Maxscript la inicia como undefined.

    Para que el código sea más claro, es recomendable indicar de que clase son las variables. Para ello, utilizaremos los términos local y global. Nótese que los comentarios en Maxscript van precedidos de 2 guiones - -".
    Local x = 2, m = 3.7.

    Local y, z, r.

    Global texto = hola.

    Global i = 1, - la declaración continúa en las líneas siguientes.

    J = 3.

    Que = sin (35).

    Local f=g=h=0.
    En la declaración de variables, podemos definir si son globales o locales, pero no indicamos de qué tipo son. Esto es debido a que las variables son libres de tipo. Las variables pueden cambiar el tipo de valor en las asignaciones. Por ejemplo, en una primera asignación una variable puede ser un entero, y en una segunda asignación, la variable puede ser una cadena de caracteres. Esto no quiere decir que se puedan hacer operaciones incorrectas. Si tratamos de hacerlas, Maxscript dará un error. Para convertir un tipo de variable en otro tipo utilizaremos la instrucción (as) de la siguiente forma:
    valor as nuevo_tipo.

    Nótese en la imagen siguiente que las salidas de comando en el oyente siempre son de color azul, excepto en los errores.


    1.5 - operaciones matemáticas en Maxscript.

    Cuando introducimos una operación matemática en Maxscript, éste evalúa dicha operación y muestra el resultado en la ventana oyente. Maxscript dispone de las operaciones matemáticas necesarias para hacer que funcione de forma semejante a una calculadora.

    Las expresiones matemáticas están compuestas por operadores (+,-,*.) y por operandos. Un operando matemático puede ser:[*] un nombre de variable, números, etc. Por ejemplo:[*]1 + 3 - suma ambos números.[*]total - 5 - suma 5 al valor de la variable total.[*]total + iva - suma el valor de la variable total más el valor de la variable iva.[*] una llamada a una función. Por ejemplo.[*](gradosaradianes grados:180) + 5 - llama a la función gradosaradianes pasando como parámetro 180 grados y al resultado le suma 5.[*]una expresión matemática. Por ejemplo:[*]123 + (total - iva) - restamos el contenido de la variable iva al contenido de total y le sumamos el valor 123.

    En la tabla siguiente podemos ver las expresiones matemáticas que tiene Maxscript.

    Operaciones matemáticas.
    <operando_matemático> + <operando_matemático> suma <operando_matemático> - <operando_matemático> resta <operando_matemático> * <operando_matemático> multiplicación <operando_matemático> / <operando_matemático> división <operando_matemático> <operando_matemático> exponencial <operando_matemático> as <factor> conversión entre tipos.

    En la figura siguiente tenemos unos ejemplos de expresiones matemáticas en el oyente de Maxscript:


    También se puede utilizar el formato abreviado de asignación del lenguaje c para modificar un valor contenido en una variable. Por ejemplo:
    Formato abreviado de asignación.
    X + = 5 - incrementa en 5 el valor de x.

    Y * = 7 - multiplica por 7 el valor de y.

    Z - = 9 - resta 9 al valor de z.

    Que / = 8 - divide que entre 8.
    1.6 - objetos de 3d Studio max en Maxscript.

    Maxscript puede trabajar con objetos de 3d Studio max al mismo tiempo que se trabaja con ellos de forma interactiva a través de los botones y paneles. De hecho, los objetos pueden ser creados, transformados, modificados y eliminados desde Maxscript al igual que se hace desde 3d Studio max.

    Los comandos de creación de objetos coinciden con los nombres de estos objetos. Podemos crear una caja tan sólo escribiendo en la ventana oyente el comando box (), o bien, si tenemos la versión, su equivalente en español caja (). Una vez escrito, y después de presionar la tecla Intro, se crea una caja con los parámetros por defecto. Es recomendable escribir los comandos en inglés, ya que no todos los parámetros que hay se han traducido al español. En este tutorial escribiremos todos los comandos y parámetros en inglés.

    Es indiferente si escribimos el comando en mayúsculas y en minúsculas, ya que Maxscript no distingue entre ellos. También se recomienda asignar el objeto a una variable, para hacer más manejable el uso de dicho objeto. Si el objeto creado no se asigna a ninguna variable y queremos referirnos a él utilizaremos el símbolo $" delante del nombre que tiene el objeto en la escena.

    Pongamos un ejemplo de creación de una caja de altura 20, anchura 30 y longitud 40. Asignaremos el resultado a la variable primera caja:


    Cuando utilizamos el comando box con parámetros, se eliminan los paréntesis y en su lugar ponemos los nombres de los parámetros seguidos de los dos puntos y su valor. Los parámetros que se omiten adquieren su valor por defecto.

    Cuando Maxscript ha creado la caja devuelve el nombre que tiene dicha caja en la escena (en este caso, el nombre será caja01") y al mismo tiempo indica la posición que tiene la nueva caja en la escena (con las coordenadas x y, z separadas por comas y dentro de corchetes). Maxscript dibuja la caja en la escena. Se puede trabajar con la nueva caja desde 3d Studio max como si se hubiese creado de forma interactiva. Podemos transformarla, modificarla, eliminarla e incluso deshacer la creación de la caja con el botón deshacer.

    Atención: no es lo mismo el nombre que tiene la caja en la escena (caja01) que el nombre de variable en Maxscript (primera caja).

    Utilizaremos la variable primera caja para acceder más fácilmente a los parámetros de creación y a las propiedades generales y de transformación:


    En la imagen anterior hay varios ejemplos de modificación de algunos parámetros de la caja. Podemos modificar todos los parámetros del objeto (altura, radio, etc), de nodo (nombre, color,) y de transformación (rotación, posición, etc). Para modificar un valor en un objeto utilizaremos uno de los siguientes es quemas:[*] $nombreobjeto. Parámetro=nuevovalor.[*] nombrevariable. Parámetro=nuevovalor.

    Donde nombreobjeto sería equivalente a $caja01 en el ejemplo anterior y nombrevariable equivale a primera caja.
    1.6.1 - showclass.

    Para saber los nombres y tipos de parámetros de un objeto se puede utilizar la función showclass(). Si escribimos en el oyente de Maxscript sólo el nombre de la función seguido de los dos paréntesis tendremos una lista de todos los objetos de 3dstudio Max y sus parámetros correspondientes. Cada parámetro ira seguido de su tipo.

    Lo más normal es que se quiera saber los parámetros de un objeto determinado, sin necesidad de que salgan todos los objetos de 3d Studio max. Tenemos dos ejemplos de ello en el siguiente recuadro.

    Ejemplos de showclass showclass box.* - muestra todos los parámetros de la clase box.

    Box(caja) : geométricas {10,0}.

    Height(altura) : float.

    Length(longitud) : float.

    Lengthsegs : integer.
    Width(anchura) : float.
    Widthsegs : integer.

    Mapcords : bolean.

    Heightsegs(segmsaltura) : integer.

    Ok.

    Showclass box.height - muestra todos los datos del parámetro height.

    Box(caja) : geometryclass {10,0}.

    Height(altura) : float.

    Ok.

    En el primer ejemplo indicamos con un asterisco que queremos saber todos los parámetros del objeto box. Utilizamos el asterisco como un comodín. Si quisiésemos saber todos los parámetros de los objetos que comenzasen por b" sólo tendríamos que poner showclass b*.*" y obtendríamos una lista con ellos. Si por el contrario ya sabemos el parámetro, pero no estamos seguros del tipo que tiene, nos bastara con poner showclass "box. Nombreparametro.

    En el segundo ejemplo de showclass hemos comprobado que el parámetro height de la clase box es del tipo float.

    Fuente oficial: bienvenidos a la página de eloweyn .

    -- IMÁGENES ADJUNTAS --









    Miniaturas adjuntas Miniaturas adjuntas Clic en la imagen para ver su versión completa. 

Nombre: ubic.JPG 
Visitas: 6137 
Tamaño: 14.8 KB 
ID: 82220   Clic en la imagen para ver su versión completa. 

Nombre: ubicDespl.JPG 
Visitas: 6045 
Tamaño: 9.6 KB 
ID: 82221   Clic en la imagen para ver su versión completa. 

Nombre: OyVacio.JPG 
Visitas: 6226 
Tamaño: 14.2 KB 
ID: 82222   Clic en la imagen para ver su versión completa. 

Nombre: Editor.JPG 
Visitas: 500 
Tamaño: 9.7 KB 
ID: 82223  

    Clic en la imagen para ver su versión completa. 

Nombre: click.JPG 
Visitas: 558 
Tamaño: 27.2 KB 
ID: 82224   Clic en la imagen para ver su versión completa. 

Nombre: OyVar.JPG 
Visitas: 6442 
Tamaño: 18.2 KB 
ID: 82225   Clic en la imagen para ver su versión completa. 

Nombre: Math.JPG 
Visitas: 7235 
Tamaño: 19.8 KB 
ID: 82226   Clic en la imagen para ver su versión completa. 

Nombre: box1.JPG 
Visitas: 6179 
Tamaño: 24.8 KB 
ID: 82227  

    Clic en la imagen para ver su versión completa. 

Nombre: box2.JPG 
Visitas: 6204 
Tamaño: 37.6 KB 
ID: 82228  
    Imágenes adjuntadas Imágenes adjuntadas  
    |Agradecer cuando alguien te ayuda es de ser agradecido|

  2. #2
    Fecha de ingreso
    Jul 2008
    Mensajes
    14

    Tutorial maxscript introducción

    Buenos días, tengo un código para max script, para importar archivos de RealFlow desde 3dsMax pero lo pego en el max script y no me funciona o no hace nada alguien me puede decir como hago esta tarea, gracias.

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

    Tutorial maxscript introducción

    Seguramente, lo que tengas sea un macro script. Al ejecutarlo, búscalo en customize/ customize user interface. Pero para importar archivos de real flow, tienes un plugin en la página web de Next Limit.

    Y la próxima vez, intenta escribir en el sitio correcto. A los administradores les cuesta tiempo y esfuerzo mantener todo el foro ordenado.

  4. #4
    Fecha de ingreso
    Jul 2008
    Mensajes
    14

    Tutorial maxscript introducción

    Lo siento mucho, pero como así que, en el sitio correcto? Disculpa mi ignorancia es que es la primera vez que escribo aquí.

  5. #5
    Fecha de ingreso
    Jul 2008
    Mensajes
    14

    Tutorial maxscript introducción

    Y sí, tengo el plugin que da corredizoNexlimit, pero no he podido con él, lo instalé, pero no me funciona. Gracias, un feliz día.

  6. #6
    Fecha de ingreso
    Jul 2009
    Mensajes
    27

    Tutorial maxscript introducción

    3dpoder. Quería hacerte una pregunta, que para colmo de males no sé cómo expresar. A ver, en otros lenguajes es posible poner una orden dentro de una variable y ejecutarla, por ejemplo, en visual Fox.

    Ahora necesito algo similar en Maxscript para actuar sobre objetos creados a mano. Son muchos muy similares y los llamo, por ejemplo: tecla01, tecla02 y así hasta una gran cantidad. Como puedo hacer para referenciarlos uno por uno, en un bucle?
    Algo que luciera más o menos como (soy novato en Maxscript):
    For n = 1 todo 100.

    Variable = tecla + (n as string).

    Variable, pos.x = n * 200.
    )
    Ya sé que la sintaxis está mal, estoy tratando de mostrar lo que necesito. Necesito que cada tecla sea tratada de una manera especial, no puedo tratarlas globalmente a todas igual. Gracias por tu atención, a lo mejor hay alguna solución en Maxscript.

  7. #7
    Fecha de ingreso
    Apr 2002
    Mensajes
    14,668

    Tutorial maxscript introducción

    Con Maxscript también puedes hacer eso. Lo que yo te recomiendo es almacenar en una lista (array) todos los objetos a modificar. O usar directamente los nombres de los objetos para efectuar la operación. En cualquier caso:
    - Recoge todo lo seleccionado en una lista.

    Thelist = #()
    For s in selection do.
    (
    append thelist s.
    ).

    Efectúa la orden en cada elemento de la lista.

    For I = 1 todo thelist, count do.
    (
    thelist[i].position.x = i * 200
    ).

  8. #8
    Fecha de ingreso
    Apr 2005
    Mensajes
    1,621

    Tutorial maxscript introducción

    Una puntualización. Recoger la selección en un array:
    Código:
    mysel = $selection as array
    Y punto pelota. Para procesar la historia:
    Código:
    for item in mysel do.
    
    Item, pos.x *= 200 -o lo que sea.
    )
    Última edición por Nessito; 09-07-2009 a las 14:41
    Aquel que pregunta, es tonto un rato. Aquel que no pregunta, es tonto toda la vida.

  9. #9
    Fecha de ingreso
    Sep 2004
    Mensajes
    123

    Tutorial maxscript introducción

    Parece que quieres basarte en el nombre del objecto, tonces:
    Código:
    (tlocal teapots = $Teapot* -también $teapotí?  (si son menos de 100) tfor n in 1 todo teapots, count do t(t teapots[n].pos.x = n * 2 t).
    )
    En selecciones se puede usar simplemente selection, solo en ciertas ocasiones se usa array, y también se puede usar getcurrentselection().

    La función selection existe para simplificar varias acciones, porque es mapeable, o sea puedes usar selecction, pues += 10 en lugar de crear loops.

  10. #10
    Fecha de ingreso
    Jul 2009
    Mensajes
    27

    Tutorial maxscript introducción

    3dpoder: Hay alguna función capaz de devolver un número rellenado por ceros por la izquierda? Esto es algo que se necesita mucho, especialmente en los bucles for con los que recorremos objetos numerados así 01, 02, 03, etc. Con n as string obtengo el número n hecho cadena, pero, si además lo quiero rellenar por la izquierda con x cantidad de ceros?
    Muchas gracias. Estos primeros días con Maxscript voy a estar preguntón.

  11. #11
    Fecha de ingreso
    Apr 2005
    Mensajes
    1,621

    Tutorial maxscript introducción

    Depende de la versión. En el 2008 ya tienes una versión formateante del print: formattedprint() creo que se llama. Busca.

    En de todas formas, siempre te puedes hacer una función de este palo:
    Código:
    Fn zerofill num size =
    (tlocal result = tlocal aux = num as string tif size > aux.count then t(t for i = 1 todo (size - Aux.count) do result += 0 t) tresult + aux.
    )
    Aquel que pregunta, es tonto un rato. Aquel que no pregunta, es tonto toda la vida.

  12. #12
    Fecha de ingreso
    Jul 2009
    Mensajes
    27

    Tutorial maxscript introducción

    Muy buena la función que rellena ceros por la izquierda, más compacta que la mía. En otros lenguajes se las conoce como padl, gracias, tengo que espabilarme más.

  13. #13
    Fecha de ingreso
    Oct 2010
    Mensajes
    585

    Tutorial maxscript introducción

    Hola a todos, tengo un ejemplo Maxscript. Este código se crea un botón para mencionar que objetos. Va realizar su trabajo, ejemplo mencionar botón caja etc.

    Este código, como le hago, para crear más botones, y que cada botón, mencione.

    Su objeto respectivo, por ejemplo, si yo menciono el botón caja, tiene que aparecer caja ok etc.

    Y espero una ayuda a todos en general, y estaré agradecido, de ustedes, gracias.

    Código:
    Rollout pru prueba-nombre del ut.

    Button b box -lo que va a tener el ut.

    On b pressed do - Cuando presione el botón.

    Box() - Lo que va a hacer cuando presione el botón).
    ).

    Createdialog pru-crear el ut.
    Última edición por Miguel-Arte-3D-1990; 03-09-2015 a las 02:19

  14. #14
    Fecha de ingreso
    Apr 2005
    Mensajes
    1,621

    Tutorial maxscript introducción

    Copia/pega el contenido del ut, cambia button b. Por button <loquetesalgadelpito>. Y sustituye la línea box(). Por lo que quieras que haga el botón en cuestión.
    Aquel que pregunta, es tonto un rato. Aquel que no pregunta, es tonto toda la vida.

  15. #15
    Fecha de ingreso
    Oct 2010
    Mensajes
    585

    3dsmax Tutorial maxscript introducción

    Hola a todos, ya resolví el caso como activar enlace y desactivar unlink. Ejemplo código: Rollout crearobj activar enlace -activar enlace-.

    Button Lin crear.

    On Lin pressed do.

    B = box name:caja.

    P = point name:punto.

    B, parent = p.

    Select p.

    Rollout unlink desactivar unlink -desactivar unlink-.

    Button deslink desactivar enlace.

    On deslink pressed do.

    Select b.
    $.parent = ulink.
    $punto).
    )).
    ).

    Createdialog unlink -desactivar-.

    Createdialog crearobj -activar- Resuelto por Miguel.
    Última edición por Miguel-Arte-3D-1990; 03-09-2015 a las 02:22

  16. #16
    Fecha de ingreso
    Jul 2008
    Mensajes
    15

    Tutorial maxscript introducción

    Seguramente ya habrás resuelto tu duda, pero por si puede ayudar a alguien más, al principio si no me equivocó debes poner el nombre de la ventana:
    Firstdialog = newrolloutfloater título de la ventana 250 175 - 250 y 175 son las medidas.

    Después de todos los uts deberías poner algo como.

    Addrollout tuprimerrollout firstdialog - Esto añadirá cada ut al diálogo.

    Addrollout tusegundorollout firstdialog.

    Addrollout, etc etc.

    Yo también soy novato en Maxscript así que, igual no es certero 100%, pero por ahí van los tiros.

  17. #17
    Fecha de ingreso
    Oct 2010
    Mensajes
    585

    Lightbulb Tutorial maxscript introducción

    Hola, amigo, tengo este experimento, que eh logrado hacer que seleccione continuamente, los objetos, pero, trato de que no siga buscando más selección, a los objetos.

    Alguien de ustedes, me podría decir como le hago, se los agradeceré mucho por su ayuda.

    Les dejo este :.
    Código:
    .
    
    Rollout pru 
    (
    button fin Crear nombre al objeto
    on fin pressed do if selection, count == 1 do if classof selection[1] == point do
    (
    myname = (filterstring selection[1].name _)[1]
    if obj.= $selection[1] do
    (
    c = $.name = myname + _C_Handle
    c = $p*
    )
    ).
    
    Spinner m Selects points range:[-0,9999,0] type:#integer.
    ---button fin1 Select el objeto nombrado
    on m changed val do if selection, count == 1 do if classof selection[1] == point do
    (c = $p*.
    
    For s in 1 to c, count - 1 do 
    (
     select c[1+m, value] 
    ) 
    ).
    )
    createdialog pru.
    ---- creado por Chapolín.
    Última edición por Miguel-Arte-3D-1990; 25-05-2015 a las 22:14

  18. #18
    Fecha de ingreso
    Oct 2010
    Mensajes
    585

    Lightbulb Tutorial maxscript introducción

    Que creen acabo de resolver el problema ehehehe, lo tenía en mis narices.- le puse en el siglo for, a si : for s in m, value to c, count - 1 do y listo, ya puedo continuar y descontinuar la selección de los objetos, bueno pues a seguir luchando con 3DS Max.

    Y espero que les sirva de algo, gracias. -.^d.
    Última edición por Miguel-Arte-3D-1990; 18-03-2015 a las 20:14

  19. #19
    Fecha de ingreso
    Oct 2010
    Mensajes
    585

    Exclamation Tutorial maxscript introducción

    Hola, amigo, tengo otro problema, alguien de ustedes me podrían explicarme, cómo se activa bien los plugins, eh tratado de sustituir, por otro nombre y el classid:
    Pero, me manda errores.

    Les dejo este ejemplo :
    Código :
    Código:
    plugin simpleobject Box.
    
    Name: crear un Box.
    
    Classid:#(0xf573d97, 0x7c695ed8).
    
    Category:Box2.
    (.
    
    Tol create.
    (.
    ).
    )
    .

    Ahora trato de cambiar a si :
    Código:
    plugin simpleobject caracteres y modelaje.
    
    Name: crear geometrias.
    
    Classid:#(0xf573d97, 0x7c695ed8).
    
    Category:por Chapolín.
    (.
    
    Tol create.
    (.
    ).
    )
    .
    --- Bueno les aviso que ahora estoy creando un plugins Crear caracteres y modelado.

    Y espero su ayuda, bueno, pues a seguir luchando con 3DS Max.
    Última edición por Miguel-Arte-3D-1990; 26-02-2015 a las 23:31

  20. #20
    Fecha de ingreso
    Oct 2010
    Mensajes
    585

    Lightbulb Tutorial maxscript introducción

    Hola, amigo, ya pude resolver el problema Gracias.
    (b-.^d).

    Era ah si.

    Código :
    Código:
    plugin simpleObject geometrias_2015
    name:geometrias
    classid:#(0x3e41a1b, 0x5acc0b94)
    category:ok
    (
     tol create
     (
    )
    )
    .

    Bueno ah seguir luchando con max.
    Última edición por Miguel-Arte-3D-1990; 22-03-2015 a las 23:07

  21. #21
    Fecha de ingreso
    Oct 2010
    Mensajes
    585

    Lightbulb Tutorial maxscript introducción

    Hola, amigo, tengo una teoría.
    ¿se podrá cambiar los nombres, a los objetos, al compás del reloj, en un siglo for? Ejemplo :
    Que cuando llegue a clonar 4 puntos, el punto 1 cambie, por otro nombre $point001.name = a, y cuando llegue a clonar 5 puntos, el punto 1 cambie por otro nombre $point001.name = b a si sucesivamente en un silgo For, pero, no sé por dónde empezar, en estos momentos estoy experimentando, de un cono que hice que está en mí nuevo tema.

    Crear Caracteres y modelado, y espero sus comentarios y su ayuda. Gracias por visitarme en mis temas.

    Ok, les dejo este Código : como teoría.
    Código:
    rollout PP 
    (
     spinner clon lados type:#integer range:[3,8,6] --- type:#integer.
    button cr clon
     on cr pressed do
     (
     deleete $p*
     deleete $b*
     deleete $c*.
    
    P = point() for i in 1 to clon, value - 1 do
     (
     copiar = copy p
     copiar, pues = [i*clon, value*10,0,0]
    ) p = $p* for i in p, count - 1 to p, count - 1 do
     (
     p[i+1].name = c
    ).
    
    P = $p* for i in p, count - 1 to p, count - 1 do
     (
     p[1].name = b
    )
    )
    )
    createdialog pp
    De que se trata esta teoría, trato de quitar, las líneas que me sobran ah la hora de realizar el cono ok. Saludos.-.
    Última edición por Miguel-Arte-3D-1990; 25-05-2015 a las 22:22

  22. #22
    Fecha de ingreso
    Oct 2010
    Mensajes
    585

    Post Tutorial maxscript introducción

    Hola, amigo, encontré esta función, de operación numérica, no sé si pueda resolver mi teoría qué deje arriba ok, les dejo este Código.
    Código:
    fn operación_numerica valor1 valor2 tipo =
    (
     if tipo == suma then return (valor1 + valor2) else
     (
     if tipo == resta then return (valor1 - valor2) else
     (
     if tipo == multi then return (valor1 * valor2) else
     (
     if tipo == divide then return (valor1 / valor2)
    )
    )
    )
    ).
    
    Operación_numerica 1 3 suma.
    
    Operación_numerica 23 3 resta.
    
    Operación_numerica 23 5 multi.
    
    Operación_numerica 64 2 divide ok, -.^d
    Bueno, espero su ayuda, y pues ah seguir luchando con 3DS Max,.-
    Gracias .
    Última edición por Miguel-Arte-3D-1990; 14-05-2015 a las 19:14

  23. #23
    Fecha de ingreso
    Oct 2010
    Mensajes
    585

    Post Tutorial maxscript introducción

    Hola, amigo, alguien me podrían explicarme, sobre los if, then, return, else, siglo for, Fn, array = #(), al menos entender, real mente que lo que estoy haciendo, cuando
    trato de sacar algo, pero la ahora ups no sé por dónde empezar, hay tantas variaciones por aprender.

    Bueno, sigo batallando con 3DS Max, y espero su ayuda plz.

    La idea qué tengo es tratar de clonar puntos y que este cambiando, constantemente, ah partir del Point001 en un siglo por, ejemplo :
    Si quiero clonar 4 puntos, el primer punto 1 cambe por un nombre a si:Point001.name = a
    y cuando quiero clonar 5 puntos, el primer punto 1 cambie por otro nombre a si:Point001.name = b.

    A si sucesivamente en un siglo for o al copas de un reloj, ejemplo:
    Que empiece a las 3 y que cuando llegue las 4 en lugar que se escuche la larma, que me cambie por nombres etc. Ok, eso es mi idea por el momento ok. Saludos a todos y que tengan un feliz, de semana santa .

  24. #24
    Fecha de ingreso
    Oct 2010
    Mensajes
    585

    Post Tutorial maxscript introducción

    Hola, colegas, alguien sabe cómo activar Flip Normals, en Maxscript, cuando ajunto a todos los splines.

    Ok, espero su ayuda ;(,.

    -- IMÁGENES ADJUNTAS --
    Miniaturas adjuntas Miniaturas adjuntas Clic en la imagen para ver su versión completa. 

Nombre: ejemplo_crear_un_cono_2014-2015_2015(10110).JPG 
Visitas: 122 
Tamaño: 101.9 KB 
ID: 205527  

  25. #25
    Fecha de ingreso
    Oct 2010
    Mensajes
    585

    Post Tutorial maxscript introducción

    Hola, amigo, tengo una duda, sobre las funciones, quiero crear point, por medio, de una función, y luego llamarlo, por otra función, a sí, sucesivamente, pero, no sé, por que se desactiva, y deja de funcionar Max, etc.

    Ejemplo:
    Código:
    Fn crearp np =
    (
     p = point name:np
     p, size = 5.0
    ).
    
    Fn creareobjetos =
    (
     crearp a
     crearp b
     crearp c.
    
    A = $a
     b = $b
     c = $c.
    
    For i = 0 to 5 do
     (
     copiar = copy a 
     copiar, name = (a + i as string)
     copiar, pues = [i*25,0,0]
     copiar, parent = a
    )
    ).
    Crearobjetos() --- nada, nada.

    Alguien de ustedes, me podrían decir, dónde está mi error plz espero su ayuda.

    Bueno, pues ah seguir luchando con 3DS Max.

  26. #26
    Fecha de ingreso
    Oct 2010
    Mensajes
    585

    Exclamation Tutorial maxscript introducción

    Hola, amigo, sigo intentando, de resolver, sobre las funciones, va de nuez con este.
    Código:
    Crearobjetos --- sin paréntesis () muy bien
    crearobjetos() --- con paréntesis nada, nada.
    --- le pongo con paréntesis, me manda error, --- sin paréntesis, si acepta, pero, no crea los point, y
    --- estado experimentando, hacer funciones, para no
    --- estar escribiendo varías veces como el ejemplo que está arriba ok.

    Ejemplo : con un Rollout.
    Código:
    Fn crearp np =
    (
     p = point name:np
     p, size = 5.0
    ).
    
    Fn creareobjetos =
    (
     crearp a
     crearp b
     crearp c.
    
    A = $a
     b = $b
     c = $c.
    
    For i = 0 to 5 do ---- me refiero todo esto estar creando
     (
     copiar = copy a 
     copiar, name = (a + i as string)
     copiar, pues = [i*25,0,0]
     copiar, parent = a
    ) ---- varias veces etc. ---
    ).
    
    Rollout ejemploconfn 
    (
     button activarlasfunciones 
     on activarlasfunciones pressed do
     (
     ---- crearobjetos() --- herronio --
     crearobjetos --- a si me indica un true se inifica verdadero
    )
    )
    createdialog ejemploconfn.
    Alguien, de ustedes, me podrían explicar, dónde está el error, plz
    espero sus comentarios plz, se los agradecería mucho ok.

    Bueno, ah seguir luchando con 3DS Max.

  27. #27
    Fecha de ingreso
    Oct 2010
    Mensajes
    585

    Thumbs up Tutorial maxscript introducción

    Mil gracias, por su ayuda, ya pude resolverlo, y espero, que le sirva, de algo ok. Saludos.
    Código:
    Fn crearp np =
    (
     p = point name:np
     p, size = 5.0
    ).
    
    Fn creareobjetos =
    (
     a = $a.
    
    For i = 1 to 5 do
     (
     copiar = copy a 
     copiar, name = (a + i as string)
     copiar, pues = [i*25,0,0]
     copiar, parent = a
    )
    ).
    
    Rollout pru 
    (
    	
     button cr 
     on cr pressed do
     (
    	deleete objects.
    
    Crearp a
    	creareobjetos()
    )
    )
    createdialog pru
    --- listo.

    Mi error fue, que era primero, es llamar, la (función crearp a), y
    luego, llamar el siguiente, (función creareobjetos()), y listo ok.

    Bueno, ah seguir batallando con MAx.
    Última edición por Miguel-Arte-3D-1990; 27-05-2015 a las 21:36

  28. #28
    Fecha de ingreso
    Oct 2010
    Mensajes
    585

    Exclamation Tutorial maxscript introducción

    Hola colegas, tengo un problema sobre (COUNT), no le hallo, como seguir continuando, de nombrar (F1 y F2), a los objetos, solo me crea una vez, cuando selecciono, los primeros 2 objetos, pero, a la hora de seleccionar otros 2 objetos, solo me nombra la letra (F) etc.

    Les dejo un ejemplo :
    Código:
    Fn a =.
    (.
    
    If selection, count > 1 then.
    (.
    $.name = f --- a qui continua el nombre (F) en cualquier objeto -.
    
    F = $f* --- a qui se nombra (F1 y F2) entre 2 objetos. -.
    
    For i in 1 to f, count - 1 do.
    (.
    
    F[1].name = f2.
    
    F[1+1].name = f1.
    ).
    ).
    
    Else.
    (.
    
    Messagebox select two objects to name, F1 and F2.
    ).
    ).
    
    Rollout p.
    (.
    
    Button cr f.
    
    On cr pressed do.
    (.
    
    A().
    ).
    ).
    
    Createdialog p.
    Espero que alguien, me pueda resolver, este ejemplo por favor.

    Se lo agradecería mucho. Saludos de Miguel.

  29. #29
    Fecha de ingreso
    Sep 2007
    Mensajes
    383

    Tutorial maxscript introducción

    Hola estoy tratando de correr el siguiente script que es para hacer Stretch a un Biped y me sale ese error, asumo que un paréntesis está mal colocado o falta, no lo entiendo, alguien sabe que puede será
    Código:
    macroScript SquashyBiped.
    
    Category:lm_Rigging.
    
    Toltip:SquashyBiped.
    
    Buttontext:SquashyBiped.
    (.
    -------------------------------------------------------------------
    -- Globals.
    --***dialog settings***.
    
    Global squashyBiped_dialog, squashyBiped_rollout.
    
    Try(cui. FloatDialogBar squashyBiped_rollout)catch().
    
    Try(cui, unRegisterDialogBar squashyBiped_rollout)catch().
    
    Try (destroydialog squashyBiped_rollout) catch().
    
    Global objs, parents.
    
    Objs = #().
    
    Parents = #().
    -- Functions.
    
    Fn biped_filt obj = classof obj == Biped_object.
    
    Fn detect_bipeds =.
    (.
    
    Arr_bipeds = #().
    
    For bips in geometry where (classof bips, controller == Vertical_Horizontal_Turn) do.
    (.
    
    Append arr_bipeds bips, name.
    ).
    
    Return arr_bipeds.
    ).
    
    Rollout squashyBiped_rollout StretchyBiped.
    (.
    
    Button btn_Stretch Make Stretchy toltip:select all Biped bones which you want to Stretch with one parameter across:2.
    
    Checkbox ch_cntInclude Skip 1st toltip:will force action to take first obj as controller only offset:[20,5].
    
    Button btn_remStretch remove Stretch toltip:select controller, width:170.
    -- local functions.
    
    Fn quick_react_setup react react2 = (.
    
    Print react.
    
    Print react2.
    
    Print dir.
    
    Print axis.
    -- animate react2 (cos new state neds value).
    
    Anim_val = 100.
    
    Animate on at time 10 react2.value = anim_val.
    
    Anim_val = -100.
    
    Animate on at time 20 react2.value = anim_val.
    -- create reaction controller on morph channel.
    
    R_cnt = float_reactor().
    
    React[1].controller = r_cnt.
    -- creating state 1.
    
    Reactto r_cnt react2.
    -- creating state 2.
    
    Slidertime = 10.
    
    Createreaction r_cnt.
    -- creating state 3.
    
    Slidertime = 20.
    
    Createreaction r_cnt.
    -- setting reaction values.
    
    SetReactionState r_cnt 1 0.5.
    
    SetReactionState r_cnt 2 1.0.
    
    SetReactionState r_cnt 3 6.0.
    -- naming reactions.
    
    SetReactionName r_cnt 1 min.
    
    SetReactionName r_cnt 2 default.
    
    SetReactionName r_cnt 3 max.
    
    Slidertime = 0.
    -- deleete animation keys.
    
    DeleteKeys react2 #allKeys.
    ).
    
    Fn setupExprCnt react react2 = (.
    -- dealing with X AXIS for Stretch.
    
    Cnt = float_expression().
    
    React[1].controller = cnt.
    
    Iface = cnt, iexprctrl.
    
    Iface, addscalartarget stretch react2 offset:0.
    
    Iface, setexpression stretch.
    -- dealing with Y&Z axis for squash expression.
    
    For i = 2 to 3 do (.
    
    Cnt = float_expression().
    
    React[i].controller = cnt.
    
    Iface = cnt, iexprctrl.
    
    Iface, addscalartarget stretch react2 offset:0.
    
    Iface, setexpression (sqrt(stretch))/stretch.
    &nbsp;).
    ).
    
    Fn check_rig node = (.
    
    If (node, modifiers[#attribute_holder].= undefined) then return true else return false.
    ).
    
    On btn_remStretch pressed do.
    (.
    
    If (check_rig selection[1] == true) then (node = selection[1]).
    
    If node.= undefined then.
    (.
    -- getting dependent nodes into array.
    
    Nodes_arr = #().
    
    Cnt_arr = #().
    
    Cnt = node, modifiers[#Attribute_Holder].stretch, controller.
    
    Nodes_arr = refs, dependentnodes cnt.
    
    Try (deleteModifier node 1) catch().
    
    For i in 1 to nodes_arr, count do.
    (.
    
    Cnt = nodes_arr[i].transform, controller, biped_subanim, controller, bipscalelist, controller.
    
    Append cnt_arr cnt.
    &nbsp;).
    
    For i in 1 to cnt_arr, count do.
    (.
    
    Cnt_arr[i].deleete 1.
    &nbsp;).
    &nbsp;).
    ).
    
    On btn_Stretch pressed do.
    (.
    
    Nodes_arr = #().
    
    Cnt_arr = #().
    
    Nodes_arr = selection as array.
    
    If ch_cntInclude, state == true then deleteItem nodes_arr 1.
    
    Node = selection[1].
    
    If node.= undefined then.
    (.
    add modifier node (EmptyModifier ()).
    
    New_def = attributes str_attributes).
    (.
    
    Parameters main ut:params.
    (.
    
    STRETCHType:#float UI:STRETCHDefault:1.0.
    &nbsp;).
    
    Rollout Params stretching Attributes.
    (.
    
    Spinner STRETCHSTRETCH: Width:100 Height:16 Align:#Left Offset:[0,0] Type:#float Range:[0.05,5,1.0].
    &nbsp;).
    &nbsp;).
    
    CustAttributes, add node, modifiers[#attribute_holder] new_def.
    
    For i in 1 to nodes_arr, count do.
    (.
    
    Cnt = nodes_arr[i].transform, controller, biped_subanim, controller, bipscalelist, controller.
    
    Append cnt_arr cnt.
    &nbsp;).
    
    For i in 1 to cnt_arr, count do.
    (.
    
    New_cnt = scaleXYZ().
    
    Cnt_arr[i]. Available, controller = new_cnt.
    &nbsp;).
    
    Cnt = Bézier_float() -- neded once.
    
    React2_cnt = node, modifiers[#attribute_holder].stretch, controller = cnt.
    
    For i in cnt_arr do.
    (.
    --react_cnt = i[1].controller.
    -- setting Stretchy at x.
    --quick_react_setup react_cnt react2_cnt -- setting Stretch at x axis.
    -- setting squash at yz.
    -- setup expression controllers.
    
    React_cnt = i[1].controller -- sending xyz controller for scalelist first controller to setup expressions on this.
    --print react_cnt.
    
    SetupExprCnt react_cnt react2_cnt.
    &nbsp;).
    ).
    ).
    
    On squashyBiped_rollout open do.
    (.
    &nbsp;).
    ) -- end of ut.
    
    On execute do (.
    
    SquashyBiped_dialog = createDialog SquashyBiped_rollout 200 60 pos:[5,70]style:#(#style_titlebar, #style_border,#style_sysmenu).
    
    SquashyBiped_rollout, title = (SquashyBiped + _v_0.2).
    ).
    )
    .

    Y este es el error que me sale una vez que lo quiero ejecutar:
    Welcome to MaxScript.
    -- Error occurred in anonymous codeblock; filename: C:\Program Files\Autodesk\3ds Max 2015\MacroScripts\lm_Rigging-SquashyBiped_0.mcr; position: 493; line: 20.
    -- Syntax error: at end, expected (.
    -- In line:.
    cuan dificil es resistir a la tentación...

Temas similares

  1. Tutorial de introducción a la Gllobal Illumination Mental Ray
    Por NeCRoManCeR en el foro Tutoriales, Libros y Manuales
    Respuestas: 0
    : 06-11-2019, 20:48
  2. RealFlow Primer tutorial de RealFlow: vistazo general e introducción
    Por kazlivsjy en el foro Tutoriales, Libros y Manuales
    Respuestas: 0
    : 07-09-2014, 12:09
  3. Respuestas: 3
    : 10-11-2008, 06:26
  4. Tutorial de maxscript principiante
    Por Alexs1888 en el foro Plugins y Scripts
    Respuestas: 4
    : 06-10-2008, 22:42
  5. 3dsMax Introducción Maxscript
    Por 3dpoder en el foro 3DStudio Max
    Respuestas: 0
    : 13-08-2005, 22:28