맥스스크립트 심화

Hierarchy > Link Info > Lock 변경하기

스크립팅하는애님 2021. 10. 22. 13:54
728x90
반응형

안녕하세요, 애니메이터가 들려주는 MAX Script의 스크립팅하는 애님입니다.

이야 정말로 오래간만에 글을 올립니다.

다들 예방접종은 잘 맞으셨는지요?

빨리 코시국이 끝났으면 좋겠네요.

 

오늘은 2일전 쯤 'TANKS'님이 질문을 주셔서 그 부분에 대해 알아보려고 합니다.

해결방법을 알아 내셨는지 지금은 질문을 삭제하셨는데요.(ㅎㅎㅎ 제가 게을러서 타이밍을 놓쳤네요.)

기억하기론 작업을 할때마다 특정 형식의 파일을 열면 'Hierarchy > Link Info > Lock'이 모두 잠겨 있어서 이 부분을 모두 열어 주는 것이 번거로워서 스크립트로 해결하고 싶다 였을 겁니다.(대충 그런 느낌이었습니다.)

 

이녀석입니다.

 

관련된 기능은 저도 써본적이 없어서 '역시 맥스는 넓다.'라는 생각을 하게 되네요.

구글링을 해보니 해당 스크립트가 존재하네요.

http://www.scriptspot.com/3ds-max/scripts/lockunlock-link-info

 

Lock/Unlock link info | ScriptSpot

When you want lock an object like a camera, you must check each box on the hierarchy > link info Same thing when you want to unlock. This script automatically do it for all entries. Additional Info:  Links

www.scriptspot.com

여기에는 한 번에 모두 잠그거나 여는 스크립트가 구현되어 있는데, 해당 내용을 확인하고, 다른 선택 옵션도 알아보겠습니다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
macroScript lockUnlock
    category:"Vinc3rz tools"
    toolTip:"Lock/Unlock"
    ButtonText:"Lock/Unlock"
(
    rollout lockUnlock "lockUnlock" width:84 height:63
    (
        label lbl1 "Links info :" pos:[2,2] width:80 height:15
        button btn1 "Lock All !!ง" pos:[2,19] width:80 height:20
        button btn2 "Unlock" pos:[2,41] width:80 height:20
        on btn1 pressed  do
            setTransformLockFlags selection #all
        on btn2 pressed  do
            setTransformLockFlags selection #none
    )
    createDialog lockUnlock style:#(#style_titlebar, #style_toolwindow, #style_sysmenu)
)
cs

 

1번 ~ 4번 라인은 맥스 스크립트를 매크로 형식으로 정하는 부분입니다.(매크로로 정하면 바로 실해되지는 않지만 단축키나 메뉴에 등록을 해서 바로 사용할 수 있는 장점이 있습니다.)

그 아래 내용은 대화 상자를 표기하는 데 사용되고 실제 Lock와 관련된 부분은 12번 라인과 14번 라인입니다.

12번 라인은 모두 잠금이고,

14번 라인은 모두 열림입니다.

 

해당 명령어의 문법은 아래와 같습니다.

getTransformLockFlags <node> -- mapped
setTransformLockFlags <node> (#all|#none| <bitarray>)-- mapped

 

getTransformLockFlags

'getTransformLockFlags'는 현제 Lock세팅을 받아 오는 것입니다.

이것은 하나의 오브젝트에서만 받아올 수 있기 때문에 위 스크립트와 같이 'selection'(복수개)을 쓸 수 없습니다.

여러 개를 한 번에 확인하고 싶다면 for문을 이용하여 각각 하나씩 확인하는 방법은 있겠습니다.(이 부분은 이미 숙지하셨다고 생각하고 해당 내용은 생략하겠습니다.)

 

 

위와 같이 박스 하나를 만든 후 선택하고 Lock를 이렇게 저렇게 원하시는대로 세팅한 다음

getTransformLockFlags $

를 실행시켜 보겠습니다.

결과 값으로 '#{1..9}', '#{1..3, 6}', '#{1.. 3}'이런 식으로 표현될 것입니다.

'..'은 연속되었다는 의미로 '1..4'는 '1, 2, 3, 4'라는 의미를 줄여서 표현 한 겁니다.

','는 연속되지 않았다는 의미입니다.

 

setTransformLockFlags

'setTransformLockFlags'는 현제 Lock 세팅하는 것입니다.

복수개를 세팅할 수 있기 때문에 위 스크립트에 나와 있는 것처럼 'selection'을 사용할 수 있습니다.

옵션의 '#all'은 모두 잠금, '#none'은 모두 열림, 'bitarray'는 배열 형식으로 '#{1..9}', '#{1..3, 6}', '#{1..3}'이렇게 작성하면 됩니다.

딱히 따로 예제는 적지 않겠습니다.(몇 번 테스트해보시면 금방 숙지할 수 있습니다.ㅎㅎ)

 

Inherit의 설정

참고로 'Locks'의 아래에 있는 'Inherit'는 

getInheritanceFlags <node> -- mapped

setInheritanceFlags <node> (#all|#none| <bitarray>)-- mapped

로 확인하거나 설정할 수 있습니다.

사용방법은 'Lock'와 동일합니다.

 

오래간만에 생존신고네요. ㅎㅎㅎ

오늘은 여기까지 하겠습니다.

다들 건승하시고 행복하세요.

728x90
반응형