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
相关产品推荐
相关产品推荐

