3ds Max에서의 속성 추출 향상

2026년 02월 14일 | 스페인어에서 번역됨
Código optimizado para mejorar la extracción de propiedades en 3ds Max mediante una versión mejorada de getUserProp en MaxScript.

MaxScript의 getUserProp 함수는 3ds Max의 오래된 버전부터 오류를 발생시켜 객체의 사용자 속성에 저장된 값의 복구에 영향을 미쳤습니다. 이 문제를 해결하기 위해 데이터 추출을 최적화하고 더 정확한 처리를 보장하는 개선된 버전이 개발되었습니다.

오랜 기간 지속된 오류의 해결책

MaxScript의 원래 함수 문제는 불리언 데이터, 숫자 또는 텍스트 문자열을 다룰 때 항상 올바른 값을 반환하지 않는 데 있습니다. 이 결함은 3ds Max 9부터 존재했으며 공식적으로 수정되지 않았습니다. 이러한 오류를 피하기 위해 데이터 복구의 안정성을 개선하는 새로운 구현이 설계되었습니다.

getUserProp 개선 버전의 주요 특징

자동화 스크립트에서의 응용

이 스크립트는 3ds Max에서 사용자 지정 도구를 작업하는 개발자에게 특히 유용하며, 객체의 사용자 속성에 저장된 데이터에 대한 더 정확한 액세스를 허용합니다. 그 응용 범위는 다음과 같습니다:

고급 워크플로우를 위한 최적화

이 새로운 버전의 구현은 3ds Max 환경 내에서 신뢰할 수 있는 데이터 획득을 용이하게 합니다. 그 목적은 사용자 속성 사용의 일관성과 안정성을 개선하여 정보 추출의 일반적인 문제를 피하는 것입니다.

개선된 스크립트 코드


-- Verifica si una cadena contiene solo números
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
)

-- Función mejorada de 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(); 
 )

코드 설명

이 스크립트는 3ds Max에 저장된 데이터를 작업하는 개발자에게 효과적인 해결책으로, 오류를 제거하고 프로젝트 내 정보 복구의 신뢰성을 향상시킵니다.