XSIforum.com

Concatenar variable a string en Maxscript

0 Usuarios y 1 Visitante están viendo este tema.

Unaided

  • ***
  • 3293
Concatenar variable a string en Maxscript
« en: 28 Noviembre 2013, 16:44:54 »
Estoy intentado construir un script para cargar varios objetos como xrefObject en Max, y me he encontrado que no me acepta el filename concatenado con una variable. ¿Estoy construyendo mal la concatenación en maxscript?           
Código: [Seleccionar]
ruta = "\\\\filer\\share\\project\\"     
                                     
xrefs.addNewXRefObject   ruta + "model01.max" "model01" #xref #xref #useScene

Re:Concatenar variable a string en Maxscript
« Respuesta #1 en: 28 Noviembre 2013, 17:03:04 »
Se lia con los espacios, si quieres utilizar una expression (concatenado) como argumento de una función debes agruparla en paréntesis (o asignarla a una variable en otra linea).

Todo esto te lo digo de memoria, lo mismo es otra cosa... yo probaría lo siguiente :)
Código: [Seleccionar]
ruta = "\\\\filer\\share\\project\\"                           
xrefs.addNewXRefObject (ruta + "model01.max") "model01" #xref #xref #useScene

Unaided

  • ***
  • 3293
Re:Concatenar variable a string en Maxscript
« Respuesta #2 en: 28 Noviembre 2013, 18:15:43 »
Agrupando como dices funciona César. ¡Gracias!

Código: [Seleccionar]
ruta = "\\\\filer\\share\\project\\"
modelo01 = "teapot"
ext = ".max"
xrefs.addNewXRefObject (ruta + modelo01 + ext) modelo01 #xref #xref #useScene

Ahora seguiré peleándome para usar una array en vez de un único valor.

Re:Concatenar variable a string en Maxscript
« Respuesta #3 en: 28 Noviembre 2013, 19:17:28 »
Jeje, hace bastante que no hago nada en maxscript pero si mal no recuerdo sería algo como...
Código: [Seleccionar]
( -- local scope
    modelos = #("box", "teapot", "sphere")
    ruta = "\\\\filer\\share\\project\\"
    for each in modelos do (
        xrefs.addNewXRefObject (ruta + each + ".max") each #xref #xref #useScene
    )
)

Por cierto, ojo con las variables globales, recuerdo que cuando estaba aprendiendo no entendía porque mi código funcionaba perfectamente en una sesión y luego fallaba al reiniciar y era por el uso inadvertido de variables globales.
En 3dsmax/maya las variables globales son persistentes entre ejecuciones (a diferencia de la implementación en Softimage), esto implica que si en algún momento luego de ejecutar el script consulto la variable 'ruta'/'modelo01'/'ext' (en otro script) esta aún retornará el contenido de la última asignación hasta reiniciar 3dsmax (o que la mate el garbage collector). Para evitar popular el entorno con variables que no tienen sentido fuera del script es recomendable escribir los scripts dentro de paréntesis (local scope), de esa forma las variables son locales por defecto y no te llevarás sorpresas.

:)

Unaided

  • ***
  • 3293
Re:Concatenar variable a string en Maxscript
« Respuesta #4 en: 28 Noviembre 2013, 19:18:10 »
Gracias a la inestimable ayuda de César y de internet, he logrado la función que quería! :D

Código: [Seleccionar]
ruta = "\\\\filer\\share\\project\\"
ext = ".max"

listArray = #()   
    file = openFile ""\\\\filer\\share\\project\\modelos.txt" mode:"r"
    while not eof file do
    (
        lineInfo = readLine file
        append listArray lineInfo
    )
    close file

    for i in listArray do
(
xrefs.addNewXRefObject (ruta + i + ext) i #xref #xref #useScene
)


Unaided

  • ***
  • 3293
Re:Concatenar variable a string en Maxscript
« Respuesta #5 en: 28 Noviembre 2013, 19:20:47 »
ieeep! no había leído tu respuesta y he posteado a saco jaja

La variable listArray la declaraban como local en el ejemplo que he visto, pero no sé porqué motivo si uso local listArray = #() me devuelve error.