Saturday, July 11, 2009

doMenuComponentSelection 관련 에러 해결법-dagMenuProc source 해주기

메뉴 관련해서 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 //

참고로 MMM에서는 F6 눌러 build 할때 install script 초반에 자동으로 이 코드를 넣어주고 있다.

MMM에서 whatIs 에 해당하는 함수는 ScriptingUtil_FindMelFileFromFunction() 이다.

No comments:

Post a Comment