Resultados 1 al 9 de 9

Tema: Maxscript creación de zip

  1. #1
    Fecha de ingreso
    Jul 2005
    Mensajes
    524

    Question [maxscript] creación de zips

    Hola, estoy escribiendo un exportador para 3ds Max para un motor de juegos que voy a utilizar para hacer en el proyecto de final de Carrera y necesito crear un (*.zip) metiendo todos los archivos y carpetas que ya me crea el mismo exportador.

    He estado buscando por todas partes, primero en la documentación de Maxscript (que es muy buena) pero en cuanto la creación de zips no pone nada de nada y después también por internet y nada de nada. Todos los scripts de ejemplo que he encontrado parecen tener el enlace roto.

    Alguien me podría decir cómo se utiliza el método Maz?
    (quiero crear el (*.zip,) no descomprimirlo), tal cual, en la documentación y nada, devuelve 0.

    Hay alguna otra forma de meter cosas en zips desde Maxscript? Gracias.

  2. #2
    Fecha de ingreso
    Apr 2002
    Mensajes
    20,217

    [maxscript] creación de zips

    Si no te he entendido mal, el max ya tiene una herramienta para eso, está en el menú file, si no recuerdo mal es archive o algo así.
    Obtén enseñanza tradicional en arte y cine. Los ordenadores solo son herramientas. Ellos no pueden tomar decisiones creativas, y solo pueden crear trabajos tan buenos como tus conocimientos y tu experiencia les permita.
    Victor Navone


    Ser "animador" es un regalo que te ganas y un honor que deben adjudicarte los otros.
    Chuck Jones


    La tecnología no hace las pelí*culas, la gente las hace. No eres un animador sólo porque puedas mover un objeto del punto A al punto B. Eres alguien quien le da vida a un personaje, que es algo que el software y la tecnología no puede dar.
    John Lasseter

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

    [maxscript] creación de zips

    cgtalk - using doscommand() with 7zip. cgtalk - script to assist users in exchanging materiales. cgtalk - doscommand does not work, yet in command Prompt it does? .

    Aquí se presentan varias maneras al margen de maz()/unmaz() (no conocía esas funciones). Espero que te sirvan, Xavi.

  4. #4
    Fecha de ingreso
    Jul 2005
    Mensajes
    524

    [maxscript] creación de zips

    Gracias por vuestras respuestas.

    Shazam: el problema es que para lo que lo voy a usar es para un exportador que tengo hecho, en el que exporto geometría, materiales, luces y cámaras todo en un mismo archivo cada uno de estos elementos van dentro de unas carpetas que se crean automáticamente con el script donde exporta los archivos de todos los objetos que ha exportado de una determinada forma y la idea es que después coja todas estas carpetas con sus respectivos archivos dentro y haga un (*.zip) de estas y lo renombre a otro formato.

    Lo de renombrarlo es lo de menos, porque sólo con hacer funcionar el cacharro que haga los zips a este le da igual si el formato que se ve es (*.zip) o si es nada, el problema viene con el tema de comprimirlo, que, por lo visto hay dos formas de hacer unzip en max (con el de los mzp y el unmaz) y únicamente una forma de zipear, y la documentación en esta parte da pena.

    IkerCLon: estoy mirando lo del doscommand, el problema que hay es que es necesario una segunda aplicación con la que realizar los zips.

    Por cierto, tengo otras 3 dudas:
    1. ¿Cómo puedo meter unas comillas dentro de un string? Seguro que haciendo s extraños de concatenar historias se puede, pero por el momento no lo he conseguido. Lo único que se me ocurre es crear un archivo en el que escribir solamente unas comillas y abrirlo desde Maxscript y concatenarlo donde quiera.

    Puede parecer una gilipollez, pero me estoy volviendo loco porque cuando pongo, por ejemplo, sólo coge las dos primeras y si pongo coge por separado las dos primeras y después las de detrás cuando lo que quiero es hacer un:
    Format to: fileout.

    Y que me saque (blabla/tututu).
    2. Cómo puedo pasar de float a intí la función bit, floatasint va como el culo de un 3,135632 (float) se saca un 1006824787 (int) o similares, si lo hago por divisiones a lo cutre manual (como en un script de ejemplo que venía con 3ds Max r4 que se llama round_to) el problema que tiene es que de un 13,4 se saca un 13,0 y sólo quiero el 13, sólo la parte entera, sin parte decimal.
    3, y la última es la que menos sentido tiene de todas: estoy guardando los índices de las caras de cada una de las mallas que hay en escena, el problema es que la salida que me saca es como la que tiene el 3ds Max.
    ([1,3,5]) y lo quiero sin corchetes.

    Para sacar esto lo hago con.

    Face= getface obj f.

    Format (%) face.

    Esto saca: ([1,3,5]) por ejemplo, (se saca los corchetes y las comillas de la chistera, aún es comprensible).

    Pues bien, si hago esto:
    Face= getface obj f.

    Format (% % %) face.x face, y face, z.

    Ahora de repente y sin darme cuenta se inventa otra historia y saca: (1.0 3.0 5.0) ¿y ahora de dónde han salido los.0? ¿otra vez a convertir historias con floatasint? (que, por cierto, no va).

  5. #5
    Fecha de ingreso
    Jul 2005
    Mensajes
    524

    [maxscript] creación de zips

    Ahora probando acabo de ver que funciona bien el Max, pero sólo con archivos y yo lo estaba intentando con una carpeta, ¿alguna idea?
    Edito: nada, falsa alarma, además es una chapuza porque si digamos que tienes lo que quieres comprimir en c:\unacarpeta\otracarpeta\otracarpeta\elarchivo.

    En el (*.zip) te mete también la estructura de directorios que ha recorrido para llegar allí.

    En plan:
    C.
    unacarpeta
    .
    otracarpeta
    .
    otracarpeta
    .
    elarchivo
    .

    Vaya, de todas formas, esto es lo de menos, pero lo de las comillas y los float sí que no tiene sentido.

    Edit2: vale, me contesto a mí mismo, ya no me acordaba que utilizaba format en vez de Print porque el Print me metía comillas delante y después de lo que quería escribir en archivos. Con ponerle un Print a esa parte se soluciona, pero para poder cerrar el paréntesis tengo que poner un format y me hace que aparezca en la otra línea, creo que no será mucho problema.

    Y el día que aprenda a leer me enteraré de que las cosas son más fáciles de lo que parecen y me daré cuenta que el bit, floatasint tiene el bit porque es para hacer operación a nivel de bit como pone en la documentación y sólo un poco más arriba dice cómo se hace.

    Por si alguien tiene curiosidad sólo hay que poner valor o variable as y el formato que quieres.
    134.1342489 as integer, difícil, ¿eh?
    Si es que la única conversión que había hecho hasta ahora en Maxscript era el Degtorad.

    Total, todo arreglado, a falta de hacer un (*.zip) decente y sin carpetas extrañas de por medio. Aunque he visto por ahí que la solución que utiliza la gente es directamente crear el (*.zip) en c:\ pero me parece un poco chapucero porque estás dando por hecho que el Hd principal del ordenador del que va a utilizar el exportador es c:, me gustaba más la idea de hacerlo en #export que ya pilla la carpeta export de la instalación de 3ds Max.
    Última edición por exavi; 26-10-2008 a las 00:53

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

    [maxscript] creación de zips

    @IkerClon: estoy mirando lo del doscommand, el problema que hay es que es necesario una segunda aplicación con la que realizar los zips.
    No sé si Windows comprime nativamente en zip. Creo que sí, pero no lo sé. El caso es que 7zip es gratuito. Incluso puede que haya versiones (no recuerdo si la oficial es así) de estas que sólo es copiar el (*.exe) en algún sitio y a volar. No es necesario que instales nada, con lo que el proceso de compresión usando doscommand no ensuciaría nada el equipo.

    Lo de las comillas es lo siguiente:
    Mystring = me llamo IkerClon, pero a veces me llaman Iker.

    O sea, se usa para meter comillas dentro de un string.

    Lo de los índices de las caras, ¿hablas del número de la cara? Porque si es así no debería sacarte ningún float. Los corchetes siempre sirven para denotar un Vector, así que, si lo que quieres es lo que te pregunto, tal vez estés usando una función que no es la que buscas. ¿puedes describirlo mejoré.

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

    [maxscript] creación de zips

    El getface retorna un array con los índices de los 3 vértices que componen esa cara, para sacarlos por separado como en todo array puedes hacer un face[1] as integer, face[2] as integer y face[3] as integer y tendrías los índices en valores enteros por separado. ¿Es eso lo que necesitas? No sé si entendí bien. Saludos.

  8. #8
    Fecha de ingreso
    Jul 2005
    Mensajes
    524

    [maxscript] creación de zips

    IkerClon: si era justo eso, es que lo de las comillas me estaba mareando ya y no sabía cómo buscarlo por la documentación si como string o qué.

    César: de momento lo hago así, pero me parece cutre y feo la manera de no-aceptar funciones dentro de funciones de Maxscript, quiero decir que, por ejemplo, para crear un directorio si tengo que hacer:
    Makedir ((Getdir #export)+@\+outputfile+@\).

    No le vale, y me toca hacer:
    Destinationdir = ((Getdir #export)+@\+outputfile+@\).

    Makedir destinationdir.

    Me parece un poco cutre tener que ir guardando variables a lo tonto cuando se podría hacer todo en una línea, y más teniendo en cuenta que esto se repite a lo largo de todo el exportador.

    Hay alguna forma de hacer este tipo de cosas? Porque a veces sí funciona, pero no voy a ir probando en cada una de las líneas si uno vale u otro no porque sería un coñazo y total sólo es un exportador para no tener que pasar por el Blender de Mac que me va muy mal en el MacBook.

    Por cierto, si tenéis curiosidad, el motor es un motor nuevo llamado Sio 2, en un principio está hecho para hacer juegos para iPhone/IPod touch, pero se pueden hacer también para Windows/OSX/Linux usando la Grub.

    Está bastante trabajado, aunque es muy nuevo y le faltan cosas básicas como animación de personajes ya sea con animación al estilo de los viejos md2 o con animación bien con skin y tal.

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

    [maxscript] creación de zips

    Precisamente las variables están para no guarrear el código y no tener sentencias tan largas como una ristra de chorizos vamos, en mi opinión, claro. Si dices que la cosa se repite, guarda más sentido almacenar datos en una variable y usarla a lo largo de todo el script que tener que ir escribiendo todo lo de Getdir y demás, cada vez.

    Creo que podrías hacer funcionar tu chorizo añadiendo un par de paréntesis extra al principio y al final. Vamos que, si puedes hacerlo de la segunda manera, también deberías poder hacerlo de la primera.

Temas similares

  1. Duda creación de splines con maxscript
    Por quicha97 en el foro Plugins y Scripts
    Respuestas: 1
    : 01-05-2017, 04:15
  2. Maxscript y swf
    Por jmpinero en el foro Plugins y Scripts
    Respuestas: 2
    : 18-12-2011, 19:17
  3. Maxscript
    Por Marc3d en el foro Videojuegos
    Respuestas: 3
    : 11-08-2010, 12:14
  4. [Maxscript]
    Por ricardo_arango en el foro Plugins y Scripts
    Respuestas: 1
    : 15-06-2007, 15:29
  5. 3dsMax Maxscript
    Por grio en el foro Animación y Rigging
    Respuestas: 3
    : 15-03-2006, 22:28