-
Modificar custattributes
Hola. Estoy modificando un script de 3ds Max (maxscript). Dicho script generaba un conjunto de atributos a ciertos objetos de la escena.
Mi problema es el siguiente:
- .
- he añadido un nuevo atributo a ese conjunto de atributos definidos en el script.
- dispongo de una antigua escena con objetos con el conjunto de atributos antiguos.
- quiero mantener la información de esos objetos y añadirles el nuevo atributo dentro de ese conjunto de atributos.
¿Es posible modificar/añadir nuevos atributos a un cust attributes concreto cuando ya disponen de ellos? Gracias y feliz año.
-
Modificar custattributes
Hola, claro que es posible redefinir un ca, te muestro un ejemplo. Supongamos que agregas un ca en el primer modificador del objeto seleccionado.
Código:
ca = attributes myca.
Parameters mycaparams ut:mycarollout.
Myspinner type:#float ui:myspinner_sp).
Rollout mycarollout ejemplo.
Spinner myspinner_sp spinner).
).
Custattributes. Add $. Modifiers[1] ca
Para redefinirlo y agregar un nuevo spinner tendrías que ejecutar algo como esto:
Código:
ca = custattributes, getdef $.modifiers[1].myca.
Attributes myca.
Redefine:ca.
Parameters mycaparams ut:mycarollout.
Myspinner type:#float ui:myspinner_sp.
Mynewspinner type:#float ui:mynewspinner_sp).
Rollout mycarollout ejemplo.
Spinner myspinner_sp spinner.
Spinner mynewspinner_sp nuevo spinner).
)
No es tan complicado como parece, si te fijas en el código para modificarlo es casi igual salvo 2 o 3 líneas. También existen scripts que ayudan mucho cuando tienes que redefinir ca con frecuencia, el custom attribute editor que encuentras aquí es muy útil. Saludos.
-
Modificar custattributes
Gracias por responder. Os explico un poco mejo mi problema, en la medida que se me permita. En una escena dispongo de cientos de líneas (line), y cada línea dispone del siguiente conjunto de atributos que en su día se especificaron:
Código:
Global atributoslinea = attributes atribslinea.
(.
Parameters main ut:paramslinea.
(.
Linea_id type:#string ui:edit_linea_id default:-1.
Lineaparam1 type:#string ui:edit_linea_p1 default:-1.
Lineaparam2 type:#string ui:edit_linea_p2 default:-1.
) t.
Rollout paramslinea linea width:168 height:350.
().
Eventos).
Ahora quiero modificar como os comenté este custattributes y quiero añadirle nuevos atributos, tal que así:
Código:
Global atributoslinea = attributes atribslinea.
(.
Parameters main ut:paramslinea.
(.
Linea_id type:#string ui:edit_linea_id default:-1.
Lineaparam1 type:#string ui:edit_linea_p1 default:-1.
Lineaparam2 type:#string ui:edit_linea_p2 default:-1.
lineaparamx type:#string ui:edit_linea_px default:-1.
Lineaparamy type:#string ui:edit_linea_py default:-1.
) t.
Rollout paramslinea linea width:168 height:350.
().
Eventos).
Al modificar el script como ha comentado César:
Código:
atributoslinea = custattributes, getdef $.atribslinea.
Attributes atribslinea.
Redefine:atributoslinea.
(.
Parameters main ut:paramslinea.
(.
Linea_id type:#string ui:edit_linea_id default:-1.
Lineaparam1 type:#string ui:edit_linea_p1 default:-1.
Lineaparam2 type:#string ui:edit_linea_p2 default:-1.
lineaparamx type:#string ui:edit_linea_px default:-1.
Lineaparamy type:#string ui:edit_linea_py default:-1.
) t.
Rollout paramslinea linea width:168 height:350.
().
Eventos).
Selecciono una línea de una escena vieja y evalúo el script. Como consecuencia de esta acción, la gran mayoría de líneas modifican el conjunto de atributos y aparecen los nuevos parámetros. Pero hay algunas líneas que no se modifican. Es muy extraño la verdad.
¿Hay alguna forma de seleccionar que líneas van a modificar el conjunto de atributos y cuáles ¿no? Gracias.