본문 바로가기
3DMAX/Script

매인 메뉴에 스크립트 등록하기

by tartist 2015. 12. 17.

제작한 스크립트를 메뉴에 등록하지 않으면 실 작업자들이 실제로 사용하는데 많은 제약이 따릅니다.

그런 문제가 없기 위해 제작한 스크립트는 반드시 메뉴에 등록을 해줘야하는데, 그 방법에 대한 가이드입니다.



맥스 스크립트 메뉴 등록 가이드

1. 맥스 스크립트 상단메뉴에 들어가려면 반드시 메크로 스크립트로 등록된 스크립트만 사용이 가능 합니다.

  • 현재 사내 매크로 스크립트는 맥스 설치폴더\\MacroSciprs\\Nlabs 폴더에 모여 있습니다.

  • 스크립트는 MacroScript 폴더에 모여있는 매크로 스크립트와 Script 폴더에 모여있는 보통 스크립트로 나뉘어 집니다..

  • 두 개의 차이점 : 

            (1) 매크로는 간단하게 실행가능한 원클릭 스크립트에 대부분 사용된다.  매크로는 맥스가 실행될께 함께 실행 되기 때문에 덩치가 커서는 안됩니다.

            (2) 일반 스크립트는 시퀀스 매니저나 애니메이션 라이브러리 같이 덩치가 큰 스크립트에 사용된다.

                내가 실행을 해야만 작동하기때문에 덩치가 커도 무리가 없습니다.

 

 

2.  매크로 스크립트를 만들기

- 현재 사내에 사용중인 매크로 스크립트들은 메뉴 등록에만 사용되고, 실제 만들어진 덩치큰 스크립트를 실행해주는 교두보 역할을 해주고 있습니다.

- 예) SequenceManeger가 메뉴에 등록될때는 매크로가 사용되고, 메뉴 버튼을 누르는 순간 실제 스크립트가 실행됩니다.

 

**사내에서 사용중인 본 메이커의 실행 매크로 스크립트

macroScript BoneMaker       --> 매크로 등록
category:"Nlabs"                    --> 카테고리 등록
buttonText:"Bone Maker"        --> 메뉴 버튼 이름 등록
tooltip:"Bone Maker"            --> 툴팁 등록
(
 on execute do
 (
   include "Nlabs/BoneMaker.ms"  --> 매크로 스크립트에 실제 스크립트가 실행되도록 연결해 줍니다.
  )
)



 

 

3. 위 매크로 스크립트를 메뉴에 등록시키기 위한 코드

- 아래 코드를 만든 후 Scripts\\Startup 폴더에 저장하시면 맥스가 실행될때 항상 메뉴가 나오게 됩니다.

스타트업에 들어간 스크립트는 맥스가 실행될때 항상 같이 실행되오니 꼭 필요한 것들만 넣어야 합니다.

 

--------------------------------------------------------------------------------------------------------

-- MainMenuClass

--------------------------------------------------------------------------------------------------------

struct MainMenuClass

(

 --------------------------------------------------------------------

 -- FindMenu

 --------------------------------------------------------------------

 fn FindMenu menuName = 

 (

             local menu = menuMan.findMenu menuName -- 없으면 undefined

             return menu

 ),

 

 --------------------------------------------------------------------

 -- AddMenu

 --------------------------------------------------------------------

 fn AddMenu menuName =

 (

             local newMenu

            

             -- 중복 추가 방지 --

             if FindMenu menuName != undefined then

              return undefined

            

             -- Menu 추가 --

             newMenu   = menuMan.createMenu menuName

             mainMenu  = menuMan.getMainMenuBar()

             subMenuItem = menuMan.createSubMenuItem menuName newMenu

             subMenuIndex = mainMenu.numItems() + 1

             mainMenu.addItem subMenuItem subMenuIndex

            

             return newMenu

 ),

 

 --------------------------------------------------------------------

 -- AddItem

 --------------------------------------------------------------------

 fn AddItem menuName item =

 (

             local newIndex

            

             menu = FindMenu menuName

            

             -- Menu가 없으면 패스 --

             if menu == undefined then

              return undefined

            

             newIndex = menu.numItems() + 1

             menu.addItem item newIndex

            

             return newItem

 ),

 

 --------------------------------------------------------------------

 -- RemoveMenu

 --------------------------------------------------------------------

 fn RemoveMenu menuName =

 (

             menu = menuMan.findMenu menuName

            

             if menu != undefined do

              menuMan.unRegisterMenu menu

            

             return ok

 ), 

 

 --------------------------------------------------------------------

 -- UpdateMenuBar

 --------------------------------------------------------------------

 fn UpdateMenuBar =

 (

             menuMan.updateMenuBar()

            

             return ok

 ), 

 

 --------------------------------------------------------------------

 -- CreateActionItem

 --------------------------------------------------------------------

 fn CreateActionItem macroScriptName categoryName =

 (

  local actionItem

 

  actionItem = menuMan.createActionItem macroScriptName categoryName

 

  return actionItem

 )

)

          

(

           menuName    = "Test"

           macroScriptName = "TestItem"

           categoryName   = "Nlabs"

 

           MainMenu = MainMenuClass()

 

           -- menu 만들기 --

           MainMenu.AddMenu menuName

 

           -- Item 만들기 --

           item = MainMenu.CreateActionItem  macroScriptName categoryName

 

           -- menu Item 등록 하기 --

           MainMenu.AddItem menuName item 

 

           -- 화면 갱신 하기 --

           MainMenu.UpdateMenuBar()

)



위 코드를 실행하면 아래 처럼 맥스 메인 메뉴에 원하는 스크립트가 등록이 됩니다.

 


위 상태에서 BoneMaker를 실행하시면 본 메이커 스크립트가 실행됩니다.

 

출처 - ​ http://hwanggoon.tistory.com/212