안녕하세요.
애니메이터가 들려주는 맥스 스크립트의 스크립팅하는 애님입니다.
오늘은 지난 시간에 해결하지 못한 문제를 해결하고 그 외에 또 있을만한 것들을 해결하려고 합니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
|
fileName = ""
maxFiles = #()
fn merge_fn =
(
mergeMaxFile fileName #select quiet:true
$.parent = (execute ("$'" + choParent_edt.text + "'"))
)
rollout Merge_Rollout "Merge"
(
button selectMerge_btn "머지파일선택" pos:[5, 5]
label fileName_lab "FileName" style_sunkenedge:true height:15 width:155 pos:[5, 30]
edittext choParent_edt "부모이름" fieldWidth:105 pos:[5, 55]
button run_btn "실행(파일)" pos:[5, 90]
button runFolder_btn "실행(폴더)" pos:[80, 90]
on selectMerge_btn pressed do
(
fileName = getOpenFileName caption:"머지할파일선택:" filename:".max" types:"맥스파일(*.max)|*.max"
if(fileName != undefined)do fileName_lab.caption = fileName
)
on run_btn pressed do
(
merge_fn()
)
on runFolder_btn pressed do
(
if((($* as array).count == 0)and(maxFileName == "")) then
(
getFolder = getSavePath caption:"머지될 폴더 선택"
if(getFolder != undefined) do
(
maxFiles = getFiles (getFolder + "\\*.max")
for i = 1 to maxFiles.count do
(
if(fileName != maxFiles[i]) do
(
loadmaxfile maxFiles[i] quiet:on
$'bip001'.transform.controller.figureMode = true
merge_fn()
$'bip001'.transform.controller.figureMode = false
saveMaxFile maxFiles[i]
resetMaxFile #noPrompt
)
)
)
)
else messagebox "열려 있는 파일을 닫아주세요."
)
)
createdialog Merge_Rollout
|
cs |
이전에 해결하지 못한
'3 '머지할' 파일 중 바이패드가 없는 녀석이 끼어 있다면?'
을 해결하겠습니다.
지금까지 바이패드가 있다는 기준으로 작업을 진행했습니다.
만약 기준 자체가 바이패드의 유무와는 관계가 없다면 바이패드 피겨 모드와 같은 부분에서 다른 방법을 생각해야 할 겁니다.
파일을 불러오고 바이패드가 없으면 아예 실행을 막는 방법도 있지만 범용성을 생각해서 바이패드가 없다면 바이패드의 피겨 모드 부분만 막는 것이 좋을 것 같습니다.
다음과 같이 수정하여 해결해 보겠습니다.
1
2
3
4
5
6
7
8
|
on runFolder_btn pressed do
(
.....
if($'bip001' != undefined) do $'bip001'.transform.controller.figureMode = true
merge_fn()
if($'bip001' != undefined) do $'bip001'.transform.controller.figureMode = false
.....
)
|
cs |
이전에 이야기한 것과 동일하게 바이패드가 있는지 없는지 확인하고 없는 것이 아니라면 다음 명령을 실행하도록 하였습니다.
보통 'if'문은 괄호를 사용하여 하위에 사용할 내용을 적어 두지만 하위에 사용할 내용이 한 줄 일 경우엔 괄호를 생략하고 한 줄로 표현할 수 있습니다.
이렇게 수정하고 폴더 머지를 실행했는데 에러가 발생했습니다.
빨간 글씨의 3번째 줄을 보면 "text"가 문제라는군요.
'알 수 없는 속성 : 정의되지 않은 "텍스트"'라고 하는데 이것은 맥스 스크립트의 변수나 정의가 자신의 영역을 넘기지 못하기 때문입니다.
'rollout Merge_Rollout "Merge"'의 하위 내용인 'choParent_edt'은 'rollout Merge_Rollout "Merge"'의 밖에서는 인식을 할 수없습니다.
'rollout Merge_Rollout "Merge"'을 전역으로 취급하거나 'choParent_edt'이 어느 소속인지 확실히 해야 합니다.
1
2
3
4
5
|
fn merge_fn =
(
mergeMaxFile fileName #select quiet:true
if(Merge_Rollout.choParent_edt.text != "") do $.parent = (execute ("$'" + Merge_Rollout.choParent_edt.text + "'"))
)
|
cs |
'Merge_Rollout.choParent_edt'라고 소속을 명확히 하여 에러를 수정했습니다.
그리고 갑자기 생긴 'if'문은 머지할 때 부모가 되는 노드를 적지 않아 해당 내용이 빈 공란일 경우 링크를 생략한다는 의미입니다.
이런저런 문제를 꽤 해결했습니다.(그랬나?)
하지만 아직 해결해야 할 것들이 있습니다.
1 '머지 파일 선택'을 하지 않고 '실행'버튼이 눌려지는 문제
2 현재 씬이 빈 상태에서 '실행(파일)'이 눌려져야 하는가?
3 소소하지만 '머지 파일 선택'후 파일 이름이 표기되는데 자꾸 잘리는 문제
다음 시간에는 위 문제를 해결하고 머지를 마무리하겠습니다.
'맥스스크립트 심화' 카테고리의 다른 글
Edit poly, Editablepoly, Edit Mesh, Editable Mesh 확인하고 분기나누기. (1) | 2021.05.12 |
---|---|
오브젝트의 하이드와 박스모드 쉽게하기(2) (0) | 2021.05.11 |
오브젝트의 하이드와 박스모드 쉽게하기(1) (3) | 2021.05.10 |
파일머지 편하게하기(8) (0) | 2021.05.03 |
파일머지 편하게하기(6) (0) | 2021.04.29 |
파일머지 편하게하기(5) (0) | 2021.04.28 |
파일머지 편하게하기(4) (0) | 2021.04.27 |
파일머지 편하게하기(3) (0) | 2021.04.26 |