Easy Reference Tool (PYTHON)
Download Script
#################################################
# You will need to fill in the BLOCK CAPITALS #
# Made by Jamie Green #
#################################################
import maya.cmds as cmds
import os
# Function to reference the file into Maya
def reference_file(file_path, namespace):
try:
print(f"Referencing file: {file_path} with namespace: {namespace}")
cmds.file(file_path, reference=True, namespace=namespace)
print("File referenced successfully.")
except Exception as e:
cmds.warning(f"Error reading file: {file_path} - {e}")
# Function to create the UI
def create_ui():
window_name = "referenceWindow"
if cmds.window(window_name, exists=True):
cmds.deleteUI(window_name)
window = cmds.window(window_name, title="Easy Reference Tool", widthHeight=(800, 500))
main_layout = cmds.formLayout(parent=window)
# Create individual columns with buttons
column_width = 200
sep_width = 2
title_height = 30
title_font_size = 1.5
def create_column(parent, label, buttons):
col = cmds.columnLayout(parent=parent, adjustableColumn=True)
cmds.text(label=label, height=int(title_height * title_font_size), font='boldLabelFont', align='center')
for btn_label, btn_cmd, *btn_args in buttons:
if btn_label == "CHARACTER1" or btn_label == "CHARACTER2" or btn_label == "CHARACTER3" or btn_label == "CHARACTER4" or btn_label == "CHARACTER5" or btn_label == "CHARACTER6":
cmds.separator(height=10, style='none') # Add a small gap before buttons
if btn_args: # If button color is specified
cmds.button(label=btn_label, command=btn_cmd, backgroundColor=btn_args[0])
else:
cmds.button(label=btn_label, command=btn_cmd)
return col
# Buttons for each column
env_buttons = [
("ENV_BUTTON1", lambda *args: reference_file(r"file.fbx", "ENV_BUTTON1_NAMESPACE")),
("ENV_BUTTON2", lambda *args: reference_file(r"file.fbx", "ENV_BUTTON2_NAMESPACE")),
("ENV_BUTTON3", lambda *args: reference_file(r"file.fbx", "ENV_BUTTON3_NAMESPACE")),
("ENV_BUTTON4", lambda *args: reference_file(r"file.fbx", "ENV_BUTTON4_NAMESPACE")),
("ENV_BUTTON5", lambda *args: reference_file(r"file.fbx", "ENV_BUTTON5_NAMESPACE")),
("ENV_BUTTON6", lambda *args: reference_file(r"file.fbx", "ENV_BUTTON6_NAMESPACE")),
("ENV_BUTTON7", lambda *args: reference_file(r"file.fbx", "ENV_BUTTON7_NAMESPACE")),
("ENV_BUTTON8", lambda *args: reference_file(r"file.fbx", "ENV_BUTTON8_NAMESPACE")),
("ENV_BUTTON9", lambda *args: reference_file(r"file.fbx", "ENV_BUTTON9_NAMESPACE")),
("ENV_BUTTON10", lambda *args: reference_file(r"file.fbx", "ENV_BUTTON10_NAMESPACE")),
("ENV_BUTTON11", lambda *args: reference_file(r"file.fbx", "ENV_BUTTON10_NAMESPACE")),
("ENV_BUTTON12", lambda *args: reference_file(r"file.fbx", "ENV_BUTTON10_NAMESPACE")),
("ENV_BUTTON13", lambda *args: reference_file(r"file.fbx", "ENV_BUTTON10_NAMESPACE")),
("ENV_BUTTON14", lambda *args: reference_file(r"file.fbx", "ENV_BUTTON10_NAMESPACE")),
("ENV_BUTTON15", lambda *args: reference_file(r"file.fbx", "ENV_BUTTON10_NAMESPACE")),
("ENV_BUTTON16", lambda *args: reference_file(r"file.fbx", "ENV_BUTTON10_NAMESPACE")),
("ENV_BUTTON17", lambda *args: reference_file(r"file.fbx", "ENV_BUTTON10_NAMESPACE")),
("ENV_BUTTON18", lambda *args: reference_file(r"file.fbx", "ENV_BUTTON10_NAMESPACE")),
("ENV_BUTTON19", lambda *args: reference_file(r"file.fbx", "ENV_BUTTON10_NAMESPACE")),
("ENV_BUTTON20", lambda *args: reference_file(r"file.fbx", "ENV_BUTTON10_NAMESPACE")),
# Add other buttons similarly
]
char_buttons = [
("CHAR_BUTTON1", lambda *args: reference_file(r"file.fbx", "CHAT_BUTTON1_NAMESPACE")),
("CHAR_BUTTON2", lambda *args: reference_file(r"file.fbx", "CHAT_BUTTON2_NAMESPACE")),
("CHAR_BUTTON3", lambda *args: reference_file(r"file.fbx", "CHAT_BUTTON3_NAMESPACE")),
("CHAR_BUTTON4", lambda *args: reference_file(r"file.fbx", "CHAT_BUTTON4_NAMESPACE")),
("CHAR_BUTTON5", lambda *args: reference_file(r"file.fbx", "CHAT_BUTTON5_NAMESPACE")),
("CHARACTER5", lambda *args: reference_file(r"file.fbx", "CHARACTER5_NAMESPACE")),
("CHAR_BUTTON6", lambda *args: reference_file(r"file.fbx", "CHAT_BUTTON6_NAMESPACE")),
("CHARACTER1", lambda *args: reference_file(r"file.fbx", "NAMESPACE")),
("CHAR_BUTTON7", lambda *args: reference_file(r"file.fbx", "CHAT_BUTTON7_NAMESPACE")),
("CHAR_BUTTON8", lambda *args: reference_file(r"file.fbx", "CHAT_BUTTON8_NAMESPACE")),
("CHARACTER6", lambda *args: reference_file(r"file.fbx", "CHARACTER6_NAMESPACE")),
("CHAR_BUTTON9", lambda *args: reference_file(r"file.fbx", "CHAT_BUTTON9_NAMESPACE")),
("CHAR_BUTTON10", lambda *args: reference_file(r"file.fbx", "CHAT_BUTTON10_NAMESPACE")),
("CHAR_BUTTON11", lambda *args: reference_file(r"file.fbx", "CHAT_BUTTON11_NAMESPACE")),
("CHAR_BUTTON12", lambda *args: reference_file(r"file.fbx", "CHAT_BUTTON12_NAMESPACE")),
("CHARACTER4", lambda *args: reference_file(r"file.fbx", "CHARACTER4_NAMESPACE")),
("CHAR_BUTTON13", lambda *args: reference_file(r"file.fbx", "CHAT_BUTTON13_NAMESPACE")),
("CHAR_BUTTON14", lambda *args: reference_file(r"file.fbx", "CHAT_BUTTON14_NAMESPACE")),
("CHAR_BUTTON15", lambda *args: reference_file(r"file.fbx", "CHAT_BUTTON15_NAMESPACE")),
("CHAR_BUTTON16", lambda *args: reference_file(r"file.fbx", "CHAT_BUTTON16_NAMESPACE")),
("CHAR_BUTTON17", lambda *args: reference_file(r"file.fbx", "CHAT_BUTTON17_NAMESPACE")),
("CHAR_BUTTON18", lambda *args: reference_file(r"file.fbx", "CHAT_BUTTON18_NAMESPACE")),
("CHAR_BUTTON19", lambda *args: reference_file(r"file.fbx", "CHAT_BUTTON19_NAMESPACE")),
("CHAR_BUTTON20", lambda *args: reference_file(r"file.fbx", "CHAT_BUTTON20_NAMESPACE")),
("CHARACTER3", lambda *args: reference_file(r"file.fbx", "CHARACTER3_NAMESPACE")),
("CHAR_BUTTON21", lambda *args: reference_file(r"file.fbx", "CHAT_BUTTON21_NAMESPACE")),
("CHAR_BUTTON22", lambda *args: reference_file(r"file.fbx", "CHAT_BUTTON22_NAMESPACE")),
("CHAR_BUTTON23", lambda *args: reference_file(r"file.fbx", "CHAT_BUTTON23_NAMESPACE")),
("CHARACTER2", lambda *args: reference_file(r"file.fbx", "CHARACTER2_NAMESPACE")),
("CHAR_BUTTON24", lambda *args: reference_file(r"file.fbx", "CHAT_BUTTON24_NAMESPACE")),
("CHAR_BUTTON25", lambda *args: reference_file(r"file.fbx", "CHAT_BUTTON25_NAMESPACE")),
# Add other buttons similarly
]
prop_buttons = [
("PROP_BUTTON1", lambda *args: reference_file(r"file.fbx", "PROP_BUTTON1_NAMESPACE")),
("PROP_BUTTON2", lambda *args: reference_file(r"file.fbx", "PROP_BUTTON2_NAMESPACE")),
("PROP_BUTTON3", lambda *args: reference_file(r"file.fbx", "PROP_BUTTON3_NAMESPACE")),
("PROP_BUTTON4", lambda *args: reference_file(r"file.fbx", "PROP_BUTTON4_NAMESPACE")),
("PROP_BUTTON5", lambda *args: reference_file(r"file.fbx", "PROP_BUTTON5_NAMESPACE")),
("PROP_BUTTON6", lambda *args: reference_file(r"file.fbx", "PROP_BUTTON6_NAMESPACE")),
("PROP_BUTTON7", lambda *args: reference_file(r"file.fbx", "PROP_BUTTON7_NAMESPACE")),
("PROP_BUTTON8", lambda *args: reference_file(r"file.fbxx", "PROP_BUTTON8_NAMESPACE")),
("PROP_BUTTON9", lambda *args: reference_file(r"file.fbx", "PROP_BUTTON9_NAMESPACE")),
("PROP_BUTTON10", lambda *args: reference_file(r"file.fbx", "PROP_BUTTON10_NAMESPACE")),
("PROP_BUTTON11", lambda *args: reference_file(r"file.fbx", "PROP_BUTTON11_NAMESPACE")),
("PROP_BUTTON12", lambda *args: reference_file(r"file.fbx", "PROP_BUTTON12_NAMESPACE")),
("PROP_BUTTON13", lambda *args: reference_file(r"file.fbx", "PROP_BUTTON13_NAMESPACE")),
("PROP_BUTTON14", lambda *args: reference_file(r"file.fbx", "PROP_BUTTON14_NAMESPACE")),
("PROP_BUTTON15", lambda *args: reference_file(r"file.fbx", "PROP_BUTTON15_NAMESPACE")),
("PROP_BUTTON16", lambda *args: reference_file(r"file.fbx", "PROP_BUTTON16_NAMESPACE")),
("PROP_BUTTON17", lambda *args: reference_file(r"file.fbx", "PROP_BUTTON17_NAMESPACE")),
("PROP_BUTTON18", lambda *args: reference_file(r"file.fbx", "PROP_BUTTON18_NAMESPACE")),
("PROP_BUTTON19", lambda *args: reference_file(r"file.fbx", "PROP_BUTTON19_NAMESPACE")),
("PROP_BUTTON20", lambda *args: reference_file(r"file.fbx", "PROP_BUTTON20_NAMESPACE")),
("PROP_BUTTON21", lambda *args: reference_file(r"file.fbx", "PROP_BUTTON21_NAMESPACE")),
("PROP_BUTTON22", lambda *args: reference_file(r"file.fbx", "PROP_BUTTON22_NAMESPACE")),
("PROP_BUTTON23", lambda *args: reference_file(r"file.fbx", "PROP_BUTTON23_NAMESPACE")),
# Add other buttons similarly
]
other_buttons = [
("OTHERBUTTON1", lambda *args: reference_file(r"file.fbx", "OTHERBUTTON1_NAMESPACE")),
("Open Reference Editor", lambda *args: cmds.ReferenceEditor(), (0.25, 0.25, 0.25)),
# Add other buttons similarly
]
# Create columns and separators
env_col = create_column(main_layout, "Environment", env_buttons)
sep1 = cmds.separator(parent=main_layout, style='in', width=sep_width)
char_col = create_column(main_layout, "Characters", char_buttons)
sep2 = cmds.separator(parent=main_layout, style='in', width=sep_width)
prop_col = create_column(main_layout, "Props", prop_buttons)
sep3 = cmds.separator(parent=main_layout, style='in', width=sep_width)
other_col = create_column(main_layout, "Other", other_buttons)
# Attach columns and separators to the form layout
cmds.formLayout(main_layout, edit=True,
attachForm=[
(env_col, 'top', 5), (env_col, 'left', 5),
(sep1, 'top', 5),
(char_col, 'top', 5),
(sep2, 'top', 5),
(prop_col, 'top', 5),
(sep3, 'top', 5),
(other_col, 'top', 5), (other_col, 'right', 5)
],
attachControl=[
(sep1, 'left', 0, env_col),
(char_col, 'left', 0, sep1),
(sep2, 'left', 0, char_col),
(prop_col, 'left', 0, sep2),
(sep3, 'left', 0, prop_col),
(other_col, 'left', 0, sep3)
],
attachPosition=[
(env_col, 'right', 0, 24),
(sep1, 'right', 0, 25),
(char_col, 'right', 0, 49),
(sep2, 'right', 0, 50),
(prop_col, 'right', 0, 74),
(sep3, 'right', 0, 75),
(other_col, 'right', 0, 100)
])
cmds.showWindow(window)
create_ui()