1. 程式人生 > 其它 >select命名_Maya中Pymel寫個帶介面的重新命名工具(一)

select命名_Maya中Pymel寫個帶介面的重新命名工具(一)

技術標籤:select命名

建立視窗

pymel.core.windows.window()

此命令用來建立一個視窗,但不會顯示視窗

顯示視窗

pymel.core.windows.showWindow()

此命令用來顯示指定視窗,如果沒有指定則顯示最近建立的視窗

import pymel.core as pm#建立一個視窗,名字為Renamepm.window(title="Rename")#顯示這個視窗pm.showWindow()

建立表格佈局

pymel.core.windows.rowColumnLayout()

此命令建立一個表格佈局

建立選擇框按鈕

pymel.core.windows.checkBox()

此命令建立一個選擇框

建立文字標籤

pymel.core.windows.text()

此命令建立一個文字標籤

建立文字控制元件

pymel.core.windows.text()

此命令建立一個可以輸入的文字控制元件

import pymel.core as pm#建立一個視窗,名字為Rename,menuBar=True新增一個空選單pm.window(menuBar=True,title="Rename")#建立一個選單欄,標籤為Editpm.menu(label='Edit')#建立一個子選單欄,標籤為Resetpm.menuItem(label='Reset')#建立help選單欄,helpMenu=True為此選單為help選單,預設都在最右側pm.menu(label='Help',helpMenu=True)#建立help選單欄中的子選單標籤為helppm.menuItem(label='Help')#建立一個Preset選單欄pm.menu(label='Preset')#建立一個表格佈局,列數為3列,第一列的長度為16個單位,第二列長度為80,第三列長度為250,第三列會隨佈局大小變換pm.rowColumnLayout(numberOfColumns=3,columnWidth=[(1, 16),(2, 80),(3, 250)],adjustableColumn=3)#建立一個選擇框pm.checkBox()#建立一個文字標籤pm.text(label="File_name:")#建立一個可以輸入文字的控制元件pm.textField()#顯示這個視窗pm.showWindow()

8f279ea1e7005e60ea9baaa3829cd76c.png

物件重新命名

pymel.core.general.rename()

重新命名選中物件賦予物件唯一名稱

import pymel.core as pm#建立一些物體pm.polySphere()pm.polyCube()pm.polyPlane()#全選pm.select(all=True)#獲取已經選中的物件all_obj = pm.selected()#對所有選中物件重新命名為aa(現有名稱衝突,則將根據提供的名稱為物件賦予唯一名稱)for old_mdl_transform in all_obj:    pm.rename(old_mdl_transform,'aa')

建立分離器

pymel.core.windows.separator()

建立一個隔離的小部件(更加美觀)

建立佈局

pymel.core.windows.columnLayout()

建立一個佈局,將子級排列在單個列中

建立按鈕

pymel.core.windows.button()

建立一個按鈕控制元件

建立確認對話方塊

pymel.core.windows.confirmDialog()

建立確認對話方塊

import pymel.core as pm#定義開啟時的命令def on_file_name(*args):    #使後面的文字框可以編輯    pm.textField(file_name,edit=True,editable=True,enable=True)#定義關閉時的命令def off_file_name(*args):    #使後面的文字框不可編輯    pm.textField(file_name,edit=True,editable=False,enable=False)#獲取工程檔案路徑obj_path = pm.sceneName()#嘗試獲取工程檔名try:    #獲得檔名    task_name = obj_path.split('.')[-2].split('/')[-1]#如果超出範圍except IndexError:    #建立確認對話方塊    pm.confirmDialog(        #對話方塊視窗名字        title='Warning',        #對話方塊內容        message='''No project file is set!File_name is empty.            ''',        #按鈕名字        button='Yes',        defaultButton='Yes',        cancelButton='No',        dismissString='No'        )    task_name = ''#建立一個視窗,名字為Rename,menuBar=True新增一個空選單pm.window(menuBar=True,title="Rename")#建立一個選單欄,標籤為Editpm.menu(label='Edit')#建立一個子選單欄,標籤為Resetpm.menuItem(label='Reset')#建立help選單欄,helpMenu=True為此選單為help選單,預設都在最右側pm.menu(label='Help',helpMenu=True)#建立help選單欄中的子選單標籤為helppm.menuItem(label='Help')#建立一個Preset選單欄pm.menu(label='Preset')#建立一個表格佈局,列數為3列,第一列的長度為16個單位,第二列長度為80,第三列長度為250,第三列會隨佈局大小變換pm.rowColumnLayout(numberOfColumns=3,columnWidth=[(1, 16),(2, 80),(3, 250)],adjustableColumn=3)#建立分離器pm.separator( height=5, style='in' )pm.separator( height=5, style='in' )pm.separator( height=5, style='in' )#建立一個選擇框,開啟和關閉執行命令pm.checkBox(label='',onCommand=on_file_name,offCommand=off_file_name)#建立一個文字標籤pm.text(label='File_name:',align='left')#建立一個文字的控制元件,不可選中,不可編輯,預設為工程檔名file_name = pm.textField(text=task_name,editable=False,enable=False)#建立分離器pm.separator( height=20, style='none' )pm.separator( height=20, style='none' )pm.separator( height=20, style='none' )pm.separator( height=30, style='none' )pm.separator( height=30, style='none' )#定義按下去的命令def change_name(*args):    #獲取File_name文字名字    new_mdl_transform = pm.textField(file_name, query = True, text = True)    #獲取選中的物件    all_obj = pm.selected()    for old_mdl_transform in all_obj:        #更改名字        pm.rename(old_mdl_transform,new_mdl_transform)#在第三列中建立一個佈局pm.columnLayout(columnAttach=('both', 50))#在第三列中建立一個按鈕為Apply按鈕,設定其寬度apply_button = pm.button(label='Apply',width=80)#編輯按鈕新增按鈕按下去執行的命令pm.button(apply_button, edit=True, command=change_name)#顯示這個視窗pm.showWindow()

選擇框可控制輸入文字開啟關閉

ed6c869d2020bf091541471245d4a1e7.png

感謝:

Hal

Unclechen