拖入脚本编辑器py选项卡运行
- import maya.cmds as cmds
- def zero_attribute(axis, attr_type):
- selected = cmds.ls(selection=True)
- if not selected:
- cmds.warning("请选择要归零的对象!")
- return
-
- attr = f"{attr_type}{axis}"
- default_value = 1 if attr_type == "scale" else 0
-
- for obj in selected:
- if not cmds.getAttr(f"{obj}.{attr}", lock=True):
- cmds.setAttr(f"{obj}.{attr}", default_value)
- def zero_translation():
- for axis in ["X", "Y", "Z"]:
- zero_attribute(axis, "translate")
- def zero_rotation():
- for axis in ["X", "Y", "Z"]:
- zero_attribute(axis, "rotate")
- def zero_scale():
- for axis in ["X", "Y", "Z"]:
- zero_attribute(axis, "scale")
- # 创建窗口
- if cmds.window("ZeroAttrWindowPrecise", exists=True):
- cmds.deleteUI("ZeroAttrWindowPrecise")
- window = cmds.window(
- "ZeroAttrWindowPrecise",
- title="精确归零属性窗口",
- width=240,
- height=155,
- menuBar=False,
- maximizeButton=False,
- minimizeButton=False
- )
- main_form = cmds.formLayout(parent=window)
- tab_layout = cmds.tabLayout(parent=main_form, innerMarginWidth=5, innerMarginHeight=5)
- # 位移选项卡
- translation_tab = cmds.columnLayout(parent=tab_layout, adjustableColumn=True)
- cmds.button(translation_tab, label="X轴归零", command=lambda _: zero_attribute("X", "translate"))
- cmds.button(translation_tab, label="Y轴归零", command=lambda _: zero_attribute("Y", "translate"))
- cmds.button(translation_tab, label="Z轴归零", command=lambda _: zero_attribute("Z", "translate"))
- cmds.button(translation_tab, label="整体归零", command=lambda _: zero_translation())
- # 旋转选项卡
- rotation_tab = cmds.columnLayout(parent=tab_layout, adjustableColumn=True)
- cmds.button(rotation_tab, label="X轴归零", command=lambda _: zero_attribute("X", "rotate"))
- cmds.button(rotation_tab, label="Y轴归零", command=lambda _: zero_attribute("Y", "rotate"))
- cmds.button(rotation_tab, label="Z轴归零", command=lambda _: zero_attribute("Z", "rotate"))
- cmds.button(rotation_tab, label="整体归零", command=lambda _: zero_rotation())
- # 缩放选项卡
- scale_tab = cmds.columnLayout(parent=tab_layout, adjustableColumn=True)
- cmds.button(scale_tab, label="X轴归零", command=lambda _: zero_attribute("X", "scale"))
- cmds.button(scale_tab, label="Y轴归零", command=lambda _: zero_attribute("Y", "scale"))
- cmds.button(scale_tab, label="Z轴归零", command=lambda _: zero_attribute("Z", "scale"))
- cmds.button(scale_tab, label="整体归零", command=lambda _: zero_scale())
- # 设置选项卡标签
- cmds.tabLayout(tab_layout, edit=True,
- tabLabel=((translation_tab, "位移归零"),
- (rotation_tab, "旋转归零"),
- (scale_tab, "缩放归零")))
- # 布局约束
- cmds.formLayout(main_form, edit=True,
- attachForm=[(tab_layout, "top", 10),
- (tab_layout, "left", 10),
- (tab_layout, "right", 10),
- (tab_layout, "bottom", 10)])
- cmds.showWindow(window)
点击复制这段代码
根据您的等级权限,您可以免回复直接查看内容,升级到更高等级可获得更多方便的权限哦~
|