메뉴 관련해서 Mel 함수를 만들 때 doMenuComponentSelection 가 없다는 에러메시지가 뜨는 경우가 있다.
특히 마야를 처음 띄우고 할때 이런 메시지를 종종 보게 되는데 일단 오른버튼을 눌러서 메뉴를 띄운 후에 실행하면 제대로 됨을 알 수 있다. 이것은 right mouse button menu 관련 코드인 dagMenuProc.mel 가 아직 source 되지 않았기 때문이다. 마야는 시작시에 모든 스크립트를 한꺼번에 다 로드하지 않는다. 예를 들면, Right mouse button menu 관련 코드는 오른 마우스버튼이 처음 눌렸을 시점에 로드한다.
따라서 MEL 처음 부분에
- if(!`exists doMenuComponentSelection`) eval("source dagMenuProc");
를 라고 넣어주면, doMenuComponentSelection 관련 에러를 보지 않고 제대로 실행되게 할 수 있다.
doMenuComponentSelection 가 dagMenuProc.mel 에 포함된 함수인지 어떻게 아는가 하면, 다음과 같이 whatIs 명령을 쓰면 된다.
- whatIs doMenuComponentSelection;
그러면 다음과 같이 나온다. // Result: Mel procedure found in: C:/Program Files/Autodesk/Maya2009/scripts/others/dagMenuProc.mel //
- 관련 링크 http://www.3dbuzz.com/vbforum/showthread.php?t=168546 http://forums.cgsociety.org/archive/index.php/t-226244.html
참고로 MMM에서는 F6 눌러 build 할때 install script 초반에 자동으로 이 코드를 넣어주고 있다.
MMM에서 whatIs 에 해당하는 함수는 ScriptingUtil_FindMelFileFromFunction() 이다.
No comments:
Post a Comment