pyside相关


启动执行文件夹:

  1. C:\Program Files\Autodesk\MotionBuilder 2018\bin\config\PythonStartup
  2. C:\Users\wb.zhangying18\Documents\MB\2018-x64\config\PythonStartup\FBX Export.py

环境变量:MB_CONFIG_DIR

MotionBuilder Help | Command Line Options | Autodesk

获取工具栏的PySide对象,并使其不可吸附主窗口

# -*- coding: utf-8 -*-
from PySide.QtCore import *
from PySide.QtGui import *
import re
  
# 获取窗口
ptn=re.compile('MainBoard')
for win in QApplication.topLevelWidgets():
    if ptn.search(win.accessibleName()):
        break
    else:
        win=None          
if win:
    FlagNoDock=False
    NoDockWgtList=[]
     
    for cWgt in win.findChildren(QDockWidget):
        if cWgt.isFloating ():
            if cWgt.allowedAreas()==Qt.NoDockWidgetArea:
                NoDockWgtList.append(cWgt)
   
            else:
                FlagNoDock=True
                cWgt.setAllowedAreas( Qt.NoDockWidgetArea )
  
    # 设置为不可浮动
    if not FlagNoDock:
        for oSetDockWgt in NoDockWgtList:
            oSetDockWgt.setAllowedAreas(Qt.LeftDockWidgetArea | Qt.RightDockWidgetArea | Qt.TopDockWidgetArea | Qt.BottomDockWidgetArea)

数字前沿 - 数字前| DF TALK | 【MotionBuilder】 使用 PySide 更舒适地工作!

创建工具

MotionBuilder Help | Python tools: best practices | Autodesk


pyfbsdk_additions::CreateUniqueTool
# 建议:检查是否存在具有相似名称的工具,如果存在,则会销毁该工具。然后,它会创建一个具有相同名称的新工具。因此,每次在测试期间重新执行脚本时,只有一个工具实例化。
 
pyfbsdk_additions::CreateTool
# 建议:在不破坏上一个工具的情况下创建工具。
 
pyfbsdk::FBTool
# 不建议这样做,因为它不会向工具管理器注册您的工具。

可以在菜单栏及工具管理内生成快捷方式

创建menu

try:
    from PySide2.QtWidgets import QApplication, QMenuBar, QMenu, QAction
except ImportError:
    from PySide.QtGui import QApplication, QMenuBar, QMenu, QAction
    
def get_main_qt_window():
    parent = QApplication.activeWindow()
    grand_parent = parent
    while grand_parent is not None:
        parent = grand_parent
        grand_parent = parent.parent()
    return parent

main_widget = get_main_qt_window()
menubar =  main_widget.findChild(QMenuBar)
custom_menu = QMenu('Pipe Tools')
action = QAction('Hello World', custom_menu)
custom_menu.addAction(action)
menubar.addMenu(custom_menu)

评论
  目录