You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

3ds Max脚本:一键控制Transform复选框且不影响其他项

解决3ds Max Transform锁定复选框的脚本问题

没问题,我来帮你搞定这两个需求!

一、仅取消Transform复选框,保留Rotation/Scale状态

要实现这个效果,核心思路是先获取当前的锁定状态,再移除Transform对应的位标记,而不是直接设为空数组(那样会清空所有锁定)。

你只需要把UNLOCK按钮的代码改成这样:

on b4 pressed do (
    currentFlags = getTransformLockFlags selection
    setTransformLockFlags selection (currentFlags - #{1,2,3})
)

解释一下:

  • getTransformLockFlags selection:获取选中对象当前的所有锁定状态位(一个BitArray)
  • - #{1,2,3}:从当前状态中移除Transform对应的三个位(1=TranslateX、2=TranslateY、3=TranslateZ),这样Rotation和Scale的原有状态会完全保留。

二、仅勾选Transform复选框,不影响其他项

如果要只把Transform的三个复选框勾选上,同时保留Rotation/Scale的现有状态,就需要用按位或操作,把Transform的位标记添加到当前状态中(如果原本没勾选就会被勾选,原本已勾选则保持不变):

你可以新增一个按钮或者修改现有按钮,代码如下:

button b5 "LOCK TRANSFORM ONLY" pos:[40,70] width:180
on b5 pressed do (
    currentFlags = getTransformLockFlags selection
    setTransformLockFlags selection (currentFlags | #{1,2,3})
)

解释一下:

  • | #{1,2,3}:将Transform的三个位标记与当前状态做按位或,确保这三个位被设置为true,其他位保持原有状态。

修改后的完整脚本

把这些整合到你的rollout里,完整代码如下:

rollout menu02 "Separated Axis" (
    label type01 "--- TRANSFORM ---"
    button b3 "LOCK" pos:[40,30] width: 80
    on b3 pressed do (
        setTransformLockFlags selection #{1,2,3}
    )
    button b4 "UNLOCK" pos:[160,30] width: 80
    on b4 pressed do (
        currentFlags = getTransformLockFlags selection
        setTransformLockFlags selection (currentFlags - #{1,2,3})
    )
    button b5 "LOCK TRANSFORM ONLY" pos:[40,70] width:180
    on b5 pressed do (
        currentFlags = getTransformLockFlags selection
        setTransformLockFlags selection (currentFlags | #{1,2,3})
    )
)
createDialog menu02 width:280 height:110

补充:位标记对应表

方便你理解各个数字对应的锁定项:

  • 1: Translate X
  • 2: Translate Y
  • 3: Translate Z
  • 4: Rotate X
  • 5: Rotate Y
  • 6: Rotate Z
  • 7: Scale X
  • 8: Scale Y
  • 9: Scale Z

内容的提问来源于stack exchange,提问作者Dan Plattner

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 09:05:47