맥스스크립트 답변 및 추가

[추가] 선택한 오브젝트 확인

스크립팅하는애님 2024. 6. 23. 20:22
728x90
반응형

안녕하세요,

스크립트하는 애님입니다.

오늘은 'OnlyCat'님이 질문 올리신 것에 대해 잠깐 설명을 하려고 합니다.

'OnlyCat'님은 현재 선택된 오브젝트를 하나씩 배열에 넣고 싶은데,

a=#()
append a ($ as array)

라고 했을 경우 선택한 오브젝트가 복수 일때는 정상 작동을 하지만, 단수일 때는 오류가 발생한다고 합니다.

그래서 count 명령어로  갯수가 단수인지 복수인지를 확인하고 싶어

$.count

를 하면, 복수일때는 $가 배열 형태를 갖기 때문에, 문제가 없지만 한 개만 선택하면 $은 배열형태가 아니기 때문에 에러가 발생합니다.

 

이럴 때 사용하는 것이 'selection' 또는 '$selection'입니다.(둘다 동일합니다.)

박스 2개를 만들고 하나만 선택하고 '$'라고 MAXScript Listener에 입력하여 결과를 보겠습니다.

$

박스의 정보를 보여줍니다.

 

그럼 이번엔 박스 2개를 모두 선택하고 똑같이 '$'라고 입력해 보겠습니다.

$

이번엔 $selection이라고 나옵니다.

즉 복수(배열형태)의 현재 선택된 오브젝트를 나타 낼때는 $보다는 $selection이 더 정확한 표현이 됩니다.

실재 배열의 형태라면 '#(Box:Box001 @ [....... , Box:Box002 @ [.......)'라고 표현될 테지만 ' $selection'는 약간 다른 것 같습니다.

하지만, 일반 배열과 같이 '$selection[1]', '$selection[2]'를 한다던가 count명령은 잘 적용됩니다.

박스를 2개를 선택하고 '$selection.cout'를 입력해 보겠습니다.

$selection.count

두개를 선택했기 때문에 2라고 나옵니다.

이번에는 1개를 선택하고 동일하게 '$selection.cout'를 입력해 보겠습니다.

1이라고 잘 나옵니다.

그렇다면 선택하지 않았을 때는 어떨까요?

선택을 해제 하고 '$selection.cout'를 입력해 보겠습니다.

선택하지 않았지만 에러가 나지 않고 0이 나왔습니다.

 

이번에는 박스 2개를 모두 선택하고 다음과 같이 스크립트를 입력합니다.

for i = 1 to $selection.count do
(
	format "%\n" selection[i].name
)

선택된 순서에 따라 다르겠지만, for문을 돌며 하나씩 이름을 출력해 줍니다.

 

이렇게 $selection은 복수 단수 심지어 선택하지 않았을 경우에도 동시에 사용이 가능하기 때문에 유용하게 사용할 수 있습니다.

 

그럼 모두 열공하시고 대박 내세요.

728x90
반응형

'맥스스크립트 답변 및 추가' 카테고리의 다른 글

게시판 설명과 잡설  (0) 2024.06.23