맥스스크립트 기초

문자열(String) 함수(2)

스크립팅하는애님 2019. 9. 1. 16:29
728x90
반응형

안녕하세요.

애니메이터가 들려주는 맥스 스크립트의 스크립팅하는 애님입니다.

지난번에 이어서 오늘도 문자열의 함수에 대해서 알아보도록 하겠습니다.

 

 

문자열의 복사

 

<string>copy <string>

문자열을 복사합니다. 문자열(배열)은 기본적으로 변수의 값을 다른 변수에 넣으면 레퍼런스로 복사가 됩니다.

다음과 같이 입력을 해 봅시다.

 

1
2
a = "abcd"
b = copy a
cs

 

여기서 잠깐 레퍼런스라는 것에 대해서 이야기해볼까 합니다.

1번 라인과 같이 변수 a에 "abcd"라는 값을 입력하면 메모리에 a에 "abcd"라는 값이 들어가 있어서 변수 a를 부르면 그 안에 들어 있는 값을 사용할 수 있습니다.

그런데 변수 aa를 생성하고 aa = a라고 하면 "abcd"라는 값이 직접 들어가지 않고 aa에 메모리에 존재하는 변수 a의 주소 값을 aa에 넣어 줍니다.

일반적으로 aa에 들어 있는 a의 주소에는 접근할 수 없고 대신 주소에 들어 있는 값 "abcd"를 보여줍니다.

이경우 a = "1234"로 값을 변경하면 레퍼런스로 연결된 aa도 값이 "1234"로 변경이 됩니다.

그런데 진짜 그런지 확인해 봅시다. ㅎㅎ

 

1
2
3
4
a = "abcd"
b = a
a = "1234"
format "b = %\n" b
cs

 

 

이상합니다. 원래라면 b = 1234가 되어야 하는데... ㅎㅎㅎ

제가 맥스의 레퍼런스에 대해 정확하게 이해를 못하는 건지도 모르겠네요.

하여튼 레퍼런스라는 게 그런 겁니다.

다음에 배울 문자열(String) 함수(5)의 append 함수의 경우 제가 설명한대로 레퍼런스가 잘 작동 됩니다.

제 생각에는 a의값을 직접 변경하는 경우에는 a와 b가 메모리상에서 따로 저장공간을 갖도록 변경이 되는것 같습니다.

append를 사용했을경우에는 a값이 바뀌면 b값도 변경이 됩니다. 자세한 내용은 문자열(String) 함수(5)의 append에서 확인 하세요.

 

 

문자열의 실행

 

execute <string>

문자열을 맥스 스크립트에서 사용할 수 있는 스크립트로 변환합니다.

뷰포트에 box001이라는 이름의 오브젝트가 있을 때 이것을 선택하고 싶으면 오브젝트의 이름으로는 선택할 수 없습니다.

이름 앞에 $표기가 붙어야 합니다.(만약 오브젝트 이름이 'box 001'과 같이 빈칸이 있으면 작음 따옴표를 앞뒤에 붙입니다.)

즉 $'box001'이라고 사용해야 하는데 일반적으로 "$'" + "box001" + "'"을 생각하게 되는데 이렇게 문자열 더하기 문자열을 하면 결국 문자열로 취급하게 됩니다.

맥스 스크립트로 취급하지를 않습니다.

그런데 execute라는 함수를 사용하면 맥스 스크립트로 취급이 됩니다.

얘기가 길어졌는데 만들어 보시고 실행해 봅시다.

우선은 Box001이라는 박스를 만들어 봅시다.

 

 

1
2
3
4
5
6
a = "Box001"
select a
b = "$'" + a + "'"
select b
c = execute b
select c
cs

 

에러가 빵빵 나오네요. ㅎㅎ

 

1번 라인은 변수 a에 문자열로 Box001을 입력했습니다.

2번 라인에서 a를 선택하라고 했는데 선택을 할 수 없다고 에러가 뜨네요.

3번 라인은 맥스 스크립트에서 오브젝트를 지칭할 때 사용하는 $를 a와 합쳐 변수 b에 넣었습니다.

4번 라인에서 다시 b를 선택하라고 했는데 문자열이라서 에러가 뜨네요.

5번 라인은 execute를 사용하여 문자열을 맥스 스크립트로 변환하여 변수 c에 저장했습니다.

6번 라인에서 또다시 c를 선택하라고 했는데 잘 선택이 됐습니다.

이것을 이용하면 간단하게 문자열로 오브젝트를 선택할 수 도있고 조금 더 응용한다면 맥스 스크립트를 외부에서 문자열로 읽어서 실행을 할 수도 있게 됩니다.

 

오늘도 문자열의 함수에 대해서 이야기했습니다.

다음에도 열심히 문자열 함수에 대해서 이야기하도록 하겠습니다.

728x90
반응형

'맥스스크립트 기초' 카테고리의 다른 글

User Defined  (4) 2019.10.02
문자열(String) 함수(5)  (0) 2019.09.04
문자열(String) 함수(4)  (0) 2019.09.03
문자열(String) 함수(3)  (0) 2019.09.02
문자열(String) 함수(1)  (0) 2019.08.31
맥스 스크립트의 유형(2), 사용자 스크립트 위치  (0) 2019.08.20
맥스 스크립트의 유형(1)  (0) 2019.08.19
함수(3)  (3) 2019.08.13