启动执行文件夹:
- C:\Program Files\Autodesk\MotionBuilder 2018\bin\config\PythonStartup
- 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)