Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Ayuda Maxscript

Iniciado por [Vil], 03 de Marzo de 2006, 02:26:50 PM

« anterior - próximo »

[Vil]

 Buenas a todos, a ver si me podeis echar una mano.

Uso blitz3d pa hacer mi juego, y un tio de por ahi se curro un plugin pa exportar desde max al formato b3d.
El problema es que tiene un pequeño bug al guardar los relative paths de las texturas, y la unica forma q tengo de hacer que se guarden bien es exportando directamente al "proyect root" el modelo, y luego moviendolo A MANO a su directorio correspondiente.

He pensado que para ahorrar tiempo en mover ese archivo, tener un script en max que haga lo siguiente (se q es una cutrada, pero es para tenerlo desde el 3dsmax todo y q solo tenga q darle a otro boton despues de exportar)

- salga el tipico arbol de directorios donde eliges uno
- mueva todos los archivos que hay en el root de mi proyecto *.b3d (q lo puedo especificar en el propio maxscript, ya q no lo voy a cambiar el proyecto de dir, se q podria ser en un .ini, pero pa no complicar) al directorio q he indicado en el guion anterior

Creo que debe ser un script muy facil, pero no tengo ni zorra de como va, y por si me podriais decir como hacerlo... y si me lo haceis ¡os pongo en los creditos! se que no es mu gratificante... pero es lo unico q pueo hacer, jejeje.

Luego me molaria q a este script se le llamara desde un boton ¿eso se puede? es q ni lo se... yo los llamo con el "run script" del menu.

No se si me he explicado.

Muuchas gracias

[Vil]

 Esto... al final me he picao y he aprendio MaxScript en un plis plas y he hecho justo lo que necesitaba...

BeRSeRKeR

 Vaya, acabo de ver tu mensaje anterior y he hecho este script en unos cinco minutillos. Al menos puede servir de ayuda a alguien.

macroScript MoveB3DFiles
category: "Blitz3D Utils"
tooltip:"Move B3D Files"
icon:#("MaxScript",2)
(
       targetExt = "*.b3d"
       projectBaseDir = "C:\project_dir_base"
       searchPattern = projectBaseDir + targetExt;

       on execute do (

               if (doesFileExist projectBaseDir) then (

                       destFolder = getSavePath "Select destination folder"

                       if destFolder != undefined do (
                               for sourceFilename in (getFiles searchPattern) do (
                                       local destFilename = destFolder + "\" + (filenameFromPath sourceFilename)
                                       renameFile sourceFilename destFilename
                               )
                       )
               )
               else (
                       messageBox "You must specify a working base path for your project!"
               )
       )
)


Habría que cambiar la variable "projectBaseDir" por el directorio base del proyecto.

Para instalar el script, habría que copiar el archivo a la carpeta "UI\MacroScripts" de MAX.

Luego habrían dos opciones para ejecutarlo. O bien se asocia a una combinación de teclas, o se asignas un botón en la barra de herramientas.

Para asociar una combinación de teclas, hay que ir a "Customize->Customize User Interface", pestaña "Keyboard", seleccionar "Blitz3D Utils" de la lista "Category". Entonces aparecerá en la lista una entrada llamada "Move B3D Files". A la derecha hay un cuadro de edición que pone "Hotkey". Tan sólo hay que pulsar la combinación de teclas (dirá si ya está asignada o no) y listo.

Para poner un botón en la barra de herramientas es similar a la opción anterior. Hay que ir a "Customize->Customize User Interface", pestaña "Toolbars", seleccionar "Blitz3D Utils" de la lista "Category". Entonces aparecerá en la lista una entrada llamada "Move B3D Files". Ahora tan sólo hay que arrastrar esa entrada a una barra de herramientas existente en el UI de MAX.

Saludos.
¡Si te buscan en nombre de la ley, huye en nombre de la libertad!!

[Vil]

 oder Berserker... muchisimas gracias. Tendre en cuenta igualme tu ayuda pa los creditos  ;)

Yo lo he hecho de otra forma, seguramente mas cutresca (tampoco he investigado mucho, no me he parado a hacer nisiquiera un IF, jejeje)


b3d_export()

-- busca archivos .b3d
Archivosb3d = getfiles "C:\\Archivos de programa\\Blitz3D\\aventura\\*.b3d"

-- vamos uno por uno moviendolos con el cuadro de dialogo
for ArchivoEncontrado in Archivosb3d do (

 -- sacamos el nombre del archivo encontrado sin la ruta
 ArchivoOrigen = filenameFromPath ArchivoEncontrado
 
 -- creamos la primera propuesta para guardar el archivo
 PrimeraPropuesta = "C:\\Archivos de programa\\Blitz3D\\aventura\\data\\models\\" + ArchivoOrigen
 
 -- mediante el cuadro de dialogo, vemos el directorio final
 ArchivoDestino = getSaveFileName \
  caption: "Ande movemos esto finalmente?" \
  filename: PrimeraPropuesta  
 
 -- movemos el archivo a la nueva ruta, borrando uno si ya existia
 deleteFile ArchivoDestino
 renameFile  ArchivoEncontrado  ArchivoDestino

)


La cosa es que creo q funciona bien. Si hay alguna garrafada, pos no taria mal que la comentases y asi aprendo un poquillo.

Gracias!

PD (no se porque he puesto en las rutas \\ en vez de \, la cosa es q lo vi en nosedonde y dejaba de darme error y ya lo ponia en tos laos  :P )






Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.