Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Pgina 1 de 16
1- Introduccin
1.1 - Descripcin 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 estn familiarizados con la programacin. Sus
variables son sin tipo y no hay distincin entre maysculas y minsculas.
Este lenguaje no necesita compilador. Todas las instrucciones se llevan a cabo en tiempo de
ejecucin.
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 utilizacin de este lenguaje pueden ser:
Pgina 2 de 16
Una vez se haya abierto la persiana de MAXScript podremos acceder a las opciones: Abrir oyente,
guin nuevo, abrir guin, ejecutar guin y cerrar.
Abrir oyente: Abre la ventana oyente de MAXScript. Si pulsamos esta opcin y el oyente
est minimizado, o escondido detrs de otra ventana, lo restaurar. Si la cierra y la vuelve a
abrir, conserva el texto que haba antes de cerrarla.
Guin nuevo: Abre un editor en una ventana nueva, donde se puede escribir un nuevo
guin en MAXScript
Abrir guin: Al pulsar esta opcin se abre un cuadro de dilogo de apertura de archivos en
el que el usuario ha de elegir un guin en MAXScript. Una vez escogido el guin se abrir
una ventana Editor de MAXScript con el contenido del fichero.
Ejecutar guin: El usuario escoge un guin en MAXScript y ste se lee y se ejecuta. La
salida puede verse, dependiendo del tipo de guin, en los visores de 3D Studio MAX o bien
en la ventana oyente de MAXScript.
Pgina 3 de 16
Pgina 4 de 16
Pgina 5 de 16
Tambin se puede utilizar el formato abreviado de asignacin del lenguaje C para modificar un
valor contenido en una variable. Por ejemplo:
<table border="1" width="100%"> <caption> Formato abreviado de asignacin </caption>
<tbody><tr> <td> 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
k / = 8 -- Divide k entre 8
</td> </tr> </tbody> </table>
Pgina 6 de 16
Cuando utilizamos el comando box con parmetros, se eliminan los parntesis y en su lugar
ponemos los nombres de los parmetros seguidos de los dos puntos y su valor. Los parmetros 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 posicin 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 creacin de la caja con el botn deshacer.
Atencin: No es lo mismo el nombre que tiene la caja en la escena (Caja01) que el nombre de
variable en MAXScript (primeraCaja).
Pgina 7 de 16
Pgina 8 de 16
.mapCoords : boolean
.heightsegs(SegmsAltura) : integer
OK
ShowClass "Box.height" -- Muestra todos los datos del parmetro height
Box(Caja) : GeometryClass {10,0}
.height(Altura) : float
OK
</td> </tr> </tbody> </table>
En el primer ejemplo indicamos con un asterisco que queremos saber todos los parmetros del
objeto Box. Utilizamos el asterisco como un comodn. Si quisisemos saber todos los parmetros
de los objetos que comenzasen por B slo tendramos que poner ShowClass B*.* y
obtendramos una lista con ellos. Si por el contrario ya sabemos el parmetro pero no estamos
seguros del tipo que tiene, nos bastar con poner ShowClassBox.NombreParmetro.
En el segundo ejemplo de ShowClass hemos comprobado que el parmetro "Height" de la clase
"Box" es del tipo "Float".
Pgina 9 de 16
En este apartado explicaremos todas las teclas de funcin que se utilizan en MAXScript. No es
necesario aprenderselas de memoria, ni mucho menos, pero puede ser til saber algunas de ellas
para ir ms rpido y evitar tener que irnos al men y buscar la funcin. Se ha de decir que todos
los mtodos abreviados tienen su equivalente en los mens del oyente y del editor de MAXScript,
o sea, que si no te interesa el tema, puedes pasar al siguiente apartado directamente (Confieso que
este es un rollo!!!).
Podemos utilizar teclas abreviadas tanto en el oyente de MAXScript como en el editor de guiones,
pero ojo! Hay un par que tienen significado diferente si las aplicas en un sitio o en otro. Tambin
hay abreviaciones especficas para el oyente, y abreviaciones slo para el editor.
Comencemos primero por las que tienen significado diferente
<table border="1" width="100%"> <caption> Teclas abreviadas con significado diferente
</caption> <tbody><tr bgcolor="#00ccff"> <td bgcolor="#00ccff" width="10%">
Nombre
</td> <td width="40%">
Significado en Oyente
</td> <td width="40%">
Significado en Editor
</td> </tr> <tr> <td valign="top">CTRL + S</td> <td valign="top">Guardar como. Abre un
cuadro de dilogo para que el usuario introduzca el nombre del fichero en el que se va a guardar
todo el texto activo del oyente.</td> <td valign="top">Guardar. Guarda el contenido del editor en
el fichero actual. Si el fichero no tiene nombre se abrir un cuadro de dilogo para que el usuario
introduzca el nombre que desee.</td> </tr> <tr> <td valign="top">CTRL + R</td> <td
valign="top">Ejecutar guin. Se abre un cuadro de dilogo para que el usuario seleccione un
fichero de MAXScript. Una vez seleccionado, se proceder a su ejecucin.</td> <td
valign="top">Sita el cursor en el lugar donde se haba situado anteriormente con un click del
botn izquierdo, o en una operacin de bsqueda. Esto es un poco complicado de entender.
Pongamos un ejemplo. Un usuario ha buscado en su editor la palabra "Esfera", y ya va por la
tercera ocurrencia, pero se da cuenta que la que le interesa es la segunda. Pulsando "CTRL + R" se
situar en la anterior, que es la que desea.
Otro ejemplo sera cuando un usuario hace click en una posicin y luego se va a otro sitio. Podr
recuperar la posicin en la que estaba anteriormente el cursor pulsando "CTRL + R"
</td> </tr> </tbody> </table> He de comentar que las teclas CTRL + R en el editor de guiones
particularmente no me han funcionado nunca. No se si es cosa de mi 3D Studio MAX o es uno de
los muchos errores que tiene nuestro querido MAXScript.
A continuacin os muestro otra tabla con funciones exclusivas del editor de guiones:
<table border="1" width="100%"> <caption> Teclas abreviadas exclusivas del editor de
guiones </caption> <tbody><tr bgcolor="#00ccff"> <td width="29%">
Nombre
</td> <td bgcolor="#00ccff" width="71%">
Significado en Editor
</td> </tr> <tr> <td valign="top">CTRL + E</td> <td valign="top">Evaluar todo. Evala todo el
cdigo que hay en el editor de guiones. Es lo mismo que seleccionar todo el texto y pulsar las
teclas SHIFT + ENTER. La ventaja es que no se tiene que seleccionar todo el texto.</td> </tr>
<tr> <td valign="top">CTRL + Click derecho del ratn</td> <td valign="top">Se muestra un
men con todos los elementos (Botones, persianas, etiquetas, funciones, etc..). De esta forma es
ms rpido ir de un sitio a otro. Simplemente se ha de pulsar la tecla CTRL y hacer un click con el
botn derecho del ratn y seleccionar el elemento en el que te quieras posicionar con un click del
botn izquierdo. El cursor se posicionar en el lugar que has seleccionado.</td> </tr> </tbody>
Pgina 10 de 16
</table> Para que os hagis una idea del men que sale pulsando las teclas CTRL + Click derecho
del ratn aqu tenis un ejemplo:
La parte izquierda es la que se muestra al pulsar CTRL + Click derecho del ratn. Una vez se ha
seleccionado el elemento "Checkbutton" , se muestra la lista de todos los checkbutton que hay en
el documento.
La siguiente tabla muestra las teclas abreviadas que tienen el mismo significado tanto en el oyente
de MAXScript como en el editor de guiones:
<table border="1" width="100%"> <caption> Teclas abreviadas comunes </caption>
<tbody><tr bgcolor="#00ccff"> <td width="17%">
Nombre
</td> <td width="83%">
Significado
</td> </tr> <tr> <td valign="top">CTRL + N</td> <td valign="top">Nuevo script. Abre una
nueva ventana de editor de guiones para que el usuario pueda escribir un nuevo documento de
MAXScript.</td> </tr> <tr> <td valign="top">CTRL + O</td> <td valign="top">Abrir script. Se
muestra un cuadro de dilogo para que el usuario pueda seleccionar unl documento existente. Una
vez seleccionado, se abrir el documento MAXScript.</td> </tr> <tr> <td valign="top">CTRL +
Z</td> <td valign="top">Deshacer. Deshace la ltima modificacin que se ha hecho. Slo tiene
memoria para una modificacin, o sea, que tened cuidado!!</td> </tr> <tr> <td
valign="top">CTRL + X</td> <td valign="top">Cortar. El usuario ha de seleccionar una parte del
documento y pulsar CTRL + X. La seleccin desaparecer (se copia en el portapapeles), pero el
usuario podr recuperarla situando el cursor a donde quiera que vuelva a aparecer y pulsando
CTRL + V. </td> </tr> <tr> <td valign="top">CTRL + C</td> <td valign="top">Copiar. El
usuario ha de seleccionar un texto y pulsar CTRl + C. El texto seleccionado se copiar en el
portapapeles. Para copiar de nuevo el texto, se habr de situar en la posicin donde desee y pulsar
CTRL + V. La diferencia con "Cortar" es que en este caso el texto seleccionado no
desaparece.</td> </tr> <tr> <td valign="top">CTRL + V</td> <td valign="top">Pegar. Pega el
contenido del portapapeles en la posicin donde se encuentre el cursor.</td> </tr> <tr> <td
valign="top">CTRL + A</td> <td valign="top">Seleccionar todo. Selecciona todo el texto del
oyente de MAXScript o del editor de guiones activo en ese momento (donde se encuentre el
cursor actualmente).</td> </tr> <tr> <td valign="top">CTRL + F</td> <td valign="top">Buscar.
Se abre el cuadro de dilogo para buscar un texto. </td> </tr> <tr> <td valign="top">CTRL +
Pgina 11 de 16
2- Programacin en MAXScript
2.2 Nombres
Los nombres en MAXScript se utilizan para definir variables, funciones, parmetros, etc. Un
nombre necesariamente ha de empezar por un carcter alfabtico o bien, por el carcter _.
Despus del primer carcter, puede haber cualquier nmero de caracteres alfanumricos o el
carcter _.
A continuacin os muestro algunos ejemplos de nombres que son correctos e incorrectos:
<table align="center" border="1" width="40%"> <tbody><tr bgcolor="#00ccff"> <td>
Correctos
</td> <td>
Incorrectos
</td> </tr> <tr> <td valign="top" width="20%">
NomCilindro_1
_Pos_04
a
Var2Vertices
1NomCilindro
?Pos_04?
a(7)
!Var2Vertices?
</td> </tr> </tbody> </table> Si por algn motivo necesitamos definir un nombre con caracteres
ilegales, como un espacio en blanco, una coma, etc, pondremos el nombre entrecomillado. Aqu
tenis un par de ejemplos.
Nombre Variable = Pepe
Pgina 12 de 16
NombreVariable
nombreVariable
NOMBREVariable
NombreVARIABLE
En el ejemplo anterior, el oyente de MAXScript compara el string "hola" con "HOLA". Podemos
ver que el resultado es false. Esto quiere decir que los dos strings son diferentes. (Ya que estamos,
tambin podemos observar que el smbolo para hacer comparaciones es "=="). En el segundo
caso, como los dos strings son iguales, el oyente devuelve True
Entre las comillas se puede escribir cualquier tipo de caracteres excepto el propio smbolo de
comillas dobles. Si se necesita escribir, se habr de introducir detrs del carcter de escape \. Por
ejemplo, para escribir la frase: Antonio me dijo Hola el otro da, se tendra que poner de la
siguiente forma:
Antonio me dijo \Hola\ el otro da
Pgina 13 de 16
Los smbolos que van precedidos del carcter de escape \ son los siguientes:
\ : Comillas.
\\ : Carcter \.
\n: Nueva lnea.
\r: Retorno de carro.
\t: Tabulacin.
En la imagen anterior podemos ver, que en la versin interactiva en espaol los decimales van
precedidos por una coma. En cambio, en la misma versin espaola, si usamos MAXScript, en
lugar de la coma tendremos que introducir un punto.
En la versin inglesa, los decimales en la versin interactiva y en MAXScript van precedidos de
un punto. Esto puede generar un poco de confusin y se ha de tener en cuenta.
Ejemplos de nmeros en MAXScript:
10.7
45
7.34
7e-4
45e5
Pgina 14 de 16
En los dos ltimos ejemplos anteriores podemos ver que las potencias de 10 se simbolizan con una
e. Para poner 7 * 10^-4 (7 por 10 elevado a -4) utilizaremos 7e-4, y para poner 45 * 10^5 se
utilizar 45e5.
Se ha de indicar que los floats en MAXScript slo permiten tener 6 nmeros decimales. A partir
del sexto, se redondean. El usuario tambin ha de saber que si se sobrepasa el rango en los
nmeros se producirn errores de desbordamiento imprevisibles.
2.5 Expresiones de comparacin
Estas expresiones sirven para comparar diferentes valores de un mismo tipo. Este tipo ha de
permitir hacer una comparacin. Devuelven como resultado TRUE si se cumplen las condiciones
especificadas o FALSE en caso contrario. MAXScript tiene las siguientes expresiones booleanas:
<table align="center" border="1" width="100%"> <caption> Expresiones booleanas </caption>
<tbody><tr bgcolor="#00ccff"> <td align="center">Instruccin</td> <td
align="center">Significado</td> </tr> <tr> <td>
<operando1></operando1> == <operando2></operando2>
<operando1></operando1> != <operando2></operando2>
<operando1> > <operando2></operando2></operando1>
<operando1> < <operando2></operando2></operando1>
<operando1> > = <operando2></operando2></operando1>
<operando1> < = <operando2></operando2></operando1>
</td> <td>
</td> </tr> </tbody> </table> Las expresiones = = y != sirven para todos los tipos de
MAXScript. Las restantes slo sirven para los tipos que aceptan comparaciones.
Por ejemplo:
<table align="center" border="1" width="80%"> <tbody><tr bgcolor="#00ccff"> <td
align="center">Instruccin</td> <td align="center">Devuelve</td> </tr> </tbody><caption>
Ejemplos
</caption> <tbody><tr> <td>25 = 33</td> <td>False, ya que 25 es diferente de 23</td> </tr>
<tr> <td>true=true</td> <td>True, ya que cierto es igual a cierto</td> </tr> <tr>
<td>true=false</td> <td>False, ya que cierto no es igual a falso</td> </tr> <tr> <td>25 != 33
</td> <td>True, ya que 25 no es igual a 33</td> </tr> <tr> <td>true != true</td> <td>False, ya
que cierto es igual a cierto, no diferente</td> </tr> <tr> <td>true != false</td> <td>True, ya que
cierto es distinto a falso</td> </tr> <tr> <td>25 > 33</td> <td>False, ya que 25 no es mayor que
33</td> </tr> <tr> <td>25 < 33</td> <td>True, ya que 25 es inferior a 33</td> </tr> <tr> <td>25
>= 25</td> <td>True, ya que 25 es igual a 25</td> </tr> <tr> <td>25 >= 15</td> <td>True, ya
que 25 es mayor que 15</td> </tr> <tr> <td>33 <= 25</td> <td>False, ya que 33 no es menor o
igual que 25</td> </tr> </tbody> </table>
Los operandos pueden ser :
Expresiones matemticas
Pgina 15 de 16
Como se ha dicho antes, los diferentes operandos de la expresin han de dar como resultado
siempre TRUE o FALSE, ya que de lo contrario, no se podr evaluar dicha expresin. Los
resultados de las operaciones con expresiones lgicas son los siguientes:
<table align="center" border="1" width="40%"> <tbody><tr bgcolor="#00ccff"> <td
align="center">Instruccin</td> <td align="center">Valor devuelto</td> </tr>
</tbody><caption> OR
</caption> <tbody><tr> <td>False OR False</td> <td>False</td> </tr> <tr> <td>False OR
True</td> <td>True</td> </tr> <tr> <td>True OR False</td> <td>True</td> </tr> <tr> <td>True
OR True</td> <td>True</td> </tr> </tbody> </table> Como se puede observar, la expresin
lgica "OR" devuelve True siempre que uno de los operandos sea true. nicamente en el caso de
que todos los operandos sean False, devolver el valor False.
En el caso de la expresin lgica "AND", slo devolver el valor True en el caso de que todos los
operandos sean True. Si por lo menos uno de ellos es False, devolver el valor False
<table align="center" border="1" width="40%"> <tbody><tr bgcolor="#00ccff"> <td
align="center">Instruccin</td> <td align="center">Valor devuelto</td> </tr>
Pgina 16 de 16
</tbody><caption> AND
</caption> <tbody><tr> <td>False AND False</td> <td>False</td> </tr> <tr> <td>False AND
True</td> <td>False</td> </tr> <tr> <td>True AND False</td> <td>False</td> </tr> <tr>
<td>True AND True</td> <td>True</td> </tr> </tbody> </table>
La expresin lgica "Not" negar el operando que se encuentre detrs de l. De tal forma que una
expresin cierta pasa a ser falsa y al revs.
<table align="center" border="1" width="40%"> <caption> NOT </caption> <tbody><tr
bgcolor="#00ccff"> <td align="center">Instruccin</td> <td align="center">Valor
devuelto</td> </tr> <tr> <td>NOT False</td> <td>True</td> </tr> <tr> <td>NOT True</td>
<td>False</td> </tr> </tbody> </table> La prioridad de las expresiones lgicas es inferior a las de
comparacin y matemticas. Siempre se ejecutarn en ltimo lugar.