Friday, 8 May 2026

renames stuff to black kites' naming conventions

 # =======================================================

# Maya Python Script

# Rename Selected Objects

# BaseName_0001_Suffix

#

# Example:

# SM_Chair_0001_GEO

# SM_Chair_0002_GEO

# SM_Chair_0003_GEO

#

# Automatically increments if names already exist

# =======================================================


import maya.cmds as cmds



# -------------------------------------------------------

# Find Next Available Number

# -------------------------------------------------------

def get_next_available_name(base_name, suffix):


    number = 1


    while True:


        # Format number as 4 digits

        number_str = str(number).zfill(4)


        # Build name

        new_name = "{}_{}_{}".format(

            base_name,

            number_str,

            suffix

        )


        # Check if object already exists

        if not cmds.objExists(new_name):

            return new_name


        number += 1



# -------------------------------------------------------

# Rename Logic

# -------------------------------------------------------

def rename_objects_execute(*args):


    # Get selected transforms

    sel = cmds.ls(selection=True, type="transform")


    if not sel:

        cmds.warning("Please select one or more transform nodes.")

        return


    # Get UI values

    base_name = cmds.textField(

        "baseNameField",

        q=True,

        text=True

    ).strip()


    suffix = cmds.textField(

        "suffixField",

        q=True,

        text=True

    ).strip()


    # Validation

    if not base_name:

        cmds.warning("Please enter a base name.")

        return


    if not suffix:

        cmds.warning("Please enter a suffix.")

        return


    renamed_count = 0


    # Rename all selected objects

    for obj in sel:


        # Get unique name

        new_name = get_next_available_name(

            base_name,

            suffix

        )


        # Rename

        renamed = cmds.rename(obj, new_name)


        print(

            'Renamed: {} -> {}'.format(obj, renamed)

        )


        renamed_count += 1


    print(

        "\nFinished. {} object(s) renamed.\n".format(

            renamed_count

        )

    )



# -------------------------------------------------------

# UI

# -------------------------------------------------------

def rename_tool_ui():


    window_name = "renameWithNumbersToolWin"


    # Delete existing window

    if cmds.window(window_name, exists=True):

        cmds.deleteUI(window_name)


    # Create window

    cmds.window(

        window_name,

        title="Rename With Incrementing Numbers",

        widthHeight=(420, 180)

    )


    cmds.columnLayout(

        adjustableColumn=True,

        rowSpacing=10

    )


    cmds.text(

        label="Rename Selected Transform Nodes"

    )


    cmds.separator(style="in")


    # Base name

    cmds.text(

        label="Base Name:",

        align="left"

    )


    cmds.textField("baseNameField")


    # Suffix

    cmds.text(

        label="Suffix:",

        align="left"

    )


    cmds.textField("suffixField")


    cmds.separator(style="in")


    # Execute button

    cmds.button(

        label="Rename Objects",

        height=40,

        command=rename_objects_execute

    )


    cmds.showWindow(window_name)



# -------------------------------------------------------

# Launch

# -------------------------------------------------------

rename_tool_ui()

python script to remove a string

insert string before string, Python script for Maya

generated through ChatGPT.. mel solutions seemed broken.
This will make a popup window, you put in your desired string and the one you want to put it in front of. Whatever you have selected gets processed

# =======================================================
# Maya Python Script
# Insert String BEFORE Another String
# on Multiple Selected Transform Nodes
# =======================================================

import maya.cmds as cmds


# -------------------------------------------------------
# Rename Logic
# -------------------------------------------------------
def insert_before_rename_execute(*args):

    # Get selected transforms
    sel = cmds.ls(selection=True, type="transform")

    if not sel:
        cmds.warning("Please select one or more transform nodes.")
        return

    # Get UI values
    insert_str = cmds.textField(
        "insertStringField",
        q=True,
        text=True
    )

    before_str = cmds.textField(
        "beforeStringField",
        q=True,
        text=True
    )

    # Validation
    if not before_str:
        cmds.warning("Please enter a target string.")
        return

    renamed_count = 0

    # Process all selected objects
    for obj in sel:

        # Skip objects that don't contain target string
        if before_str not in obj:
            print(
                'Skipped "{}" (target string not found)'.format(obj)
            )
            continue

        # Find insertion point
        index = obj.find(before_str)

        # Build new name
        new_name = (
            obj[:index] +
            insert_str +
            obj[index:]
        )

        # Rename object
        renamed = cmds.rename(obj, new_name)

        print(
            'Renamed: {} -> {}'.format(obj, renamed)
        )

        renamed_count += 1

    print(
        "\nFinished. {} object(s) renamed.\n".format(
            renamed_count
        )
    )


# -------------------------------------------------------
# UI
# -------------------------------------------------------
def insert_before_tool_ui():

    window_name = "insertBeforeToolWin"

    # Delete existing window
    if cmds.window(window_name, exists=True):
        cmds.deleteUI(window_name)

    # Create window
    cmds.window(
        window_name,
        title="Insert String Before",
        widthHeight=(400, 180)
    )

    cmds.columnLayout(
        adjustableColumn=True,
        rowSpacing=10
    )

    cmds.text(
        label="Rename Selected Transform Nodes"
    )

    cmds.separator(style="in")

    # Insert string
    cmds.text(
        label="String To Insert:",
        align="left"
    )

    cmds.textField("insertStringField")

    # Before string
    cmds.text(
        label="Insert BEFORE This String:",
        align="left"
    )

    cmds.textField("beforeStringField")

    cmds.separator(style="in")

    # Execute button
    cmds.button(
        label="Rename Selected Objects",
        height=40,
        command=insert_before_rename_execute
    )

    cmds.showWindow(window_name)


# -------------------------------------------------------
# Launch
# -------------------------------------------------------
insert_before_tool_ui()