From d7efd2a28a1875e460ea39d266defcfe9180f2d6 Mon Sep 17 00:00:00 2001 From: henrique Date: Mon, 23 Feb 2026 21:55:20 -0300 Subject: [PATCH] teste --- install_vr4life.py | 57 ++++++++++++++++++++++++++-------------------- 1 file changed, 32 insertions(+), 25 deletions(-) diff --git a/install_vr4life.py b/install_vr4life.py index 4f85db3..c2ac5bd 100644 --- a/install_vr4life.py +++ b/install_vr4life.py @@ -1,10 +1,12 @@ import os from pymxs import runtime as rt -def force_menu_to_ui(): +def auto_install_menu(): try: - # 1. Garante que o MacroScript (Action) existe para o botão funcionar + # 1. PEGAR O CAMINHO DO PLUGIN (onde este script está) plugin_dir = os.path.dirname(os.path.realpath(__file__)).replace("\\", "/") + + # 2. REGISTAR A ACTION (O QUE O BOTÃO FAZ) macro_cmd = f""" macroScript VR4Life_Launcher category:"Immerse Games" @@ -15,34 +17,39 @@ tooltip:"Abrir VR4Life" """ rt.execute(macro_cmd) - # 2. Localiza a barra de menus principal do 3ds Max - main_menu = rt.menuMan.getMainMenuBar() + # 3. CRIAR O MENU NO TOPO + menu_manager = rt.menuMan + main_bar = menu_manager.getMainMenuBar() + + # Verifica se o menu já existe para não duplicar toda vez que rodar + for i in range(1, main_bar.numItems() + 1): + if main_bar.getItem(i).getTitle() == "VR4Life": + menu_manager.unRegisterMenu(menu_manager.findMenu("VR4Life")) + + # Cria um novo menu chamado VR4Life + new_menu = menu_manager.createMenu("VR4Life") - # 3. Verifica se o menu VR4Life já está lá para não duplicar - already_exists = False - for i in range(1, main_menu.numItems() + 1): - if main_menu.getItem(i).getTitle() == "VR4Life": - already_exists = True - break + # Cria o item de clique que chama a Action que registamos acima + # O nome tem de ser igual ao do macroScript: "VR4Life_Launcher" + launcher_item = menu_manager.createActionItem("VR4Life_Launcher", "Immerse Games") - if not already_exists: - # Tenta encontrar o menu definido no seu .mnx - # No Max 2026, usamos o título que você deu no arquivo - vr_menu = rt.menuMan.findMenu("VR4Life") - - if vr_menu: - # Cria o item de interface e insere antes do 'Help' (último item) - menu_item = rt.menuMan.createSubMenuItem("VR4Life", vr_menu) - main_menu.addItem(menu_item, main_menu.numItems()) - rt.menuMan.updateMenuBar() - print("VR4Life: Menu injetado com sucesso na barra principal.") - else: - print("VR4Life: Definição de menu não encontrada. Tente reiniciar o Max.") + # Adiciona o botão dentro do menu + new_menu.addItem(launcher_item, -1) + # 4. INJETAR NA BARRA PRINCIPAL (Main Menu Bar) + # Cria o "SubMenu" e coloca ele antes do 'Help' (último item) + sub_menu_item = menu_manager.createSubMenuItem("VR4Life", new_menu) + main_bar.addItem(sub_menu_item, main_bar.numItems()) + + # ATUALIZA A INTERFACE NA HORA + menu_manager.updateMenuBar() + + print("VR4Life: Menu instalado via script com sucesso!") return True + except Exception as e: - print(f"Erro ao injetar menu: {str(e)}") + print(f"Erro no script de menu: {str(e)}") return False if __name__ == "__main__": - force_menu_to_ui() \ No newline at end of file + auto_install_menu() \ No newline at end of file