Mejorar la función getUserProp en 3ds Max
El script Improved getUserProp soluciona un error persistente en la función getUserProp de MaxScript, presente incluso desde 3ds Max 9. Este problema impide obtener correctamente los valores de las propiedades de usuario de los objetos en ciertas condiciones.
Solución a un error de larga data
La función original de MaxScript no siempre devuelve los valores esperados al recuperar datos desde las propiedades de usuario. Para abordar este inconveniente, se ha desarrollado una versión mejorada de getUserProp, que garantiza una extracción precisa de los datos, incluso cuando estos contienen valores booleanos, numéricos o cadenas de texto.
Características principales de getUserProp mejorado
- Verificación de contenido numérico en los valores obtenidos.
- Corrección de formatos de texto, evitando errores de conversión.
- Compatibilidad con versiones antiguas de 3ds Max, incluyendo la versión 9.
- Manejo de booleanos y valores numéricos de forma precisa.
Aplicaciones en scripts de automatización
Este script es útil para quienes desarrollan herramientas y procesos de automatización en 3ds Max, ya que permite acceder con mayor precisión a los datos almacenados en las propiedades de usuario de los objetos. Puede ser empleado en:
- Recuperación de información almacenada en modelos 3D.
- Scripts de gestión de metadatos dentro de la escena.
- Automatización de procesos de exportación y manipulación de objetos.
Optimización para flujos de trabajo avanzados
La implementación de getUserProp mejorado facilita la obtención de datos confiables dentro del entorno de 3ds Max, mejorando la consistencia y estabilidad en el uso de propiedades de usuario. Esta solución es especialmente valiosa para desarrolladores que trabajan con herramientas personalizadas y requieren un acceso preciso a la información de los objetos.
Código:
--function to check the text include only Number
fn isNumeral txt = (
s= txt as string
for i = 1 to s.count do(
if(findString "0123456789" s[i]) == undefined then(
return false
)
)
return true
)
--function improved getUserProp
fn getUserProp2 obj =(
local ss = (getUserPropBuffer obj) as stringStream
if ss != undefined then(
while (eof ss) != true do(
local txt = readline ss
local arr = filterstring txt " = "
if arr[2] != undefined then(
if (arr[2] == "true") or (arr[2] == "false") or ((isNumeral arr[2]) == true ) then(
txt = arr[1] + "=" + arr[2]
execute txt
readline ss
)else(
arr[2] = "@\"" + arr[2]
append arr[2] "\""
txt = arr[1] + "=" + arr[2]
execute txt
readline ss
)
)else(
txt = arr[1] + "=" + "\"\""
execute txt
readline ss
)
)
)else(
return();
)
La función getUserProp2 mejora la funcionalidad estándar de getUserProp en MaxScript, corrigiendo errores en la lectura de valores almacenados en las propiedades de usuario de los objetos en 3ds Max.
Explicación del código
isNumeral(txt): Comprueba si una cadena de texto contiene solo números.
getUserProp2(obj):
- Recupera los valores almacenados en las propiedades de usuario.
- Verifica si son números, valores booleanos o cadenas de texto.
- Estructura los valores correctamente para evitar errores de conversión.
- Ejecuta la asignación de valores de forma segura.
Este script es útil para desarrolladores que necesitan acceder a datos de objetos en 3ds Max sin preocuparse por los errores que presenta la función original.
|Agradecer cuando alguien te ayuda es de ser agradecido|