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

Maya Python问题:循环中字符串拼接变量名无法识别为实际值

Maya Python脚本:解决平面放置预设象限的变量调用问题

你遇到的问题本质是字符串不能直接当变量用——你拼接出来的f'pos{i}'+'[0]'只是长得像变量名的字符串,不是实际的数值变量,cmds.move需要的是具体的坐标数值,自然识别不了。

直接换个思路,把四个预设坐标放进一个列表里,循环时直接按索引取就行,不用拼字符串。修改后的代码如下:

import maya.cmds as cmds
import random as r

cmds.select(all=True)
cmds.delete()

xNeg = -6
xPos = 6
zNeg = -6
zPos = 6

# 把四个坐标放进一个列表统一管理
positions = [
    [xNeg, 0, zNeg],   # 对应原pos1
    [xPos, 0, zNeg],   # 对应原pos2
    [xPos, 0, zPos],   # 对应原pos3
    [xNeg, 0, zPos]    # 对应原pos4
]

def planes(planesNum):
    for i in range(planesNum):
        # 保持原命名习惯,用i+1给平面编号
        cmds.polyPlane(w=10, h=10, sw=5, sh=5, n=f'plane_{i+1}')
        # 直接从列表取当前象限的坐标
        current_pos = positions[i]
        cmds.move(current_pos[0], current_pos[1], current_pos[2], f'plane_{i+1}')
        print(current_pos[0])  # 打印当前平面的X坐标值

planes(4)  # 传入4即可生成四个象限的平面

关键改动说明:

  • 用positions列表替代单独的pos1-pos4变量,彻底避免字符串拼接调用变量的错误逻辑
  • 循环时通过列表索引直接获取坐标,保证传入cmds.move的是真实数值
  • 调整循环索引逻辑,让平面命名和列表坐标的对应关系更清晰

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 16:55:09