3D Max

AI로 3dsmax Script 만들기 : 에러 발생 해결 방법

From.h 2025. 5. 16. 15:51
728x90
반응형

 

 

맥스 스크립트 만드는 도중에 에러 발생 해결 

"Spline Z Editor" 

 

 

 

 

1 객체 선택 에러

- 뷰포트에서 객체를 선택할 때 마다, UI에서 선택 List 항목이 자동으로 바뀌지 않는 문제

- 일일이 Refresh를 해줘야 되는 문제

 

해결방법

- 콜백 함수를 넣어준다.

- 작성한 코드의 제일 마지막에 아래 코드를 넣어주니 해결 되었다.

- 선을 선택할 때마다 자동으로 List의 항목도 바뀐다. 

- 반대로 List의 항목을 바꾸면 뷰포트의 객체 선택도 자동으로 바뀐다.

- refresh가 필요없어졌다.

callbacks.removeScripts id:#SplineZEditorCallbacks
callbacks.addScript #selectionSetChanged "try(if SplineZEditorFloater != undefined do (SplineZEditor.updateSplineUI())) catch()" id:#SplineZEditorCallbacks

 

 

 

 

 

 

 

2 정의되지 않은 사용자 지정 값 undefined와 return 함수의 문제

- 사용자 정의에서 Spinner값을 적용하여 패턴을 만드는데 이 부분이 에러가 생김

if customSteps == undefined or customSteps < 2 or customSteps > knotCount then
(
    messageBox "Steps must be at least 2 and less than or equal to total vertices."
    return
)

- MaxScript에서 return이 함수 실행을 즉시 종료시키는데, 이 위치나 문법이 맞지 않을 때 에러가 날 수 있습니다.

- local z 값을 계산하기 위해 사용하는 수식 중 하나가 undefined가 되어 float 변환에 실패

 

해결방법

 

  • ceil, floor로 실제 인덱스 안전하게 정리
  • continue를 사용해 startKnot가 범위 초과할 경우 루프 무시
  • endKnot이 spline 끝을 넘지 않도록 min(), if로 방어
  • t 계산 시 분모 +1 처리로 divide-by-zero 방지
  • as float로 강제 형변환

 

local segmentCount = customSteps - 1
if segmentCount < 1 then return()

 

 local startIndex = 1 + (s * knotsPerStep)
 local endIndex = 1 + ((s + 1) * knotsPerStep)
 local startKnot = ceil startIndex
 local endKnot = floor endIndex

 

 

 

챗GPT가 이런 식으로 방법을 알려준다

거의 10번 정도 되물어서 겨우 해결했다.

간단한 코드 수정으로 해결되지 않을 경우

방식을 바꿔서 시도하도록 명령해야 한다.

얘는 계속 도돌이표 답을 주기도 하기 때문이다.

 

 

 

 

 

BR. h

 

 

 

728x90
반응형