3
0

set_menu.py 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115
  1. # coding:utf-8
  2. #!/usr/bin/python
  3. #
  4. # Copyright (c) Contributors to the Open 3D Engine Project.
  5. # For complete copyright and license terms please see the LICENSE at the root of this distribution.
  6. #
  7. # SPDX-License-Identifier: Apache-2.0 OR MIT
  8. #
  9. #
  10. # -------------------------------------------------------------------------
  11. """
  12. Module Documentation:
  13. DccScriptingInterface//Tools//DCC//maya//scripts//set_menu.py
  14. This module creates and manages a DCCsi mainmenu
  15. """
  16. # -------------------------------------------------------------------------
  17. # -- Standard Python modules
  18. import logging as _logging
  19. # -- External Python modules
  20. # none
  21. # -- DCCsi Extension Modules
  22. import DccScriptingInterface.azpy
  23. from DccScriptingInterface.Tools.DCC.Maya.constants import OBJ_DCCSI_MAINMENU
  24. from DccScriptingInterface.Tools.DCC.Maya.constants import TAG_DCCSI_MAINMENU
  25. # -- maya imports
  26. import pymel.core as pm
  27. # -------------------------------------------------------------------------
  28. # -------------------------------------------------------------------------
  29. # global scope
  30. from DccScriptingInterface.Tools.DCC.Maya import _PACKAGENAME
  31. _MODULENAME = f'{_PACKAGENAME}.set_menu'
  32. _LOGGER = _logging.getLogger(_MODULENAME)
  33. _LOGGER.info(f'Initializing: {_MODULENAME}')
  34. from DccScriptingInterface.globals import *
  35. # -------------------------------------------------------------------------
  36. # -------------------------------------------------------------------------
  37. def menu_cmd_test():
  38. _LOGGER.info('test_func(), is TESTING main menu')
  39. return
  40. # -------------------------------------------------------------------------
  41. # -------------------------------------------------------------------------
  42. def export_scene_materials(args):
  43. # It is unclear why a False argument is being passed when called from the menu item below, but needed to add args
  44. # for function to fire
  45. _LOGGER.info('Exporting Scene Materials')
  46. from importlib import reload
  47. from DccScriptingInterface.azpy.dcc.maya.helpers import maya_materials_conversion
  48. from DccScriptingInterface.azpy.o3de.renderer.materials import material_utilities
  49. from DccScriptingInterface.azpy.o3de.renderer.materials import o3de_material_generator
  50. from DccScriptingInterface.azpy.dcc.maya.helpers import convert_aiStandardSurface_material
  51. from DccScriptingInterface.azpy.dcc.maya.helpers import convert_aiStandard_material
  52. from DccScriptingInterface.azpy.dcc.maya.helpers import convert_stingray_material
  53. from DccScriptingInterface.azpy import general_utils
  54. from DccScriptingInterface.Tools.DCC.Maya.Scripts.Python.scene_exporter import export_tool
  55. reload(maya_materials_conversion)
  56. reload(material_utilities)
  57. reload(o3de_material_generator)
  58. reload(convert_aiStandardSurface_material)
  59. reload(convert_aiStandard_material)
  60. reload(convert_stingray_material)
  61. reload(general_utils)
  62. reload(export_tool)
  63. export_tool.SceneExporter('convert')
  64. # -------------------------------------------------------------------------
  65. # -------------------------------------------------------------------------
  66. def set_main_menu(obj_name=OBJ_DCCSI_MAINMENU, label=TAG_DCCSI_MAINMENU):
  67. _main_window = pm.language.melGlobals['gMainWindow']
  68. _menu_obj = obj_name
  69. _menu_label = label
  70. # check if it already exists and remove (so we don't duplicate)
  71. if pm.menu(_menu_obj, label=_menu_label, exists=True, parent=_main_window):
  72. pm.deleteUI(pm.menu(_menu_obj, e=True, deleteAllItems=True))
  73. # create the main menu object
  74. _custom_tools_menu = pm.menu(_menu_obj,
  75. label=_menu_label,
  76. parent=_main_window,
  77. tearOff=True)
  78. # Conversion Section (sub-menu)
  79. _LOGGER.info('A')
  80. pm.menuItem(label='Scene Export',
  81. subMenu=True,
  82. parent=_custom_tools_menu,
  83. tearOff=True)
  84. # Conversion Section Menu Items
  85. pm.menuItem(label='Export Scene FBX Models and Materials', command=export_scene_materials)
  86. return _custom_tools_menu
  87. # ==========================================================================
  88. # Run as LICENSE
  89. #==========================================================================
  90. if __name__ == '__main__':
  91. _custom_menu = set_main_menu()