Maya Python两节点多属性自动连接代码循环报错问题求助

问题原因
- 数据类型使用错误:你将
left_LIST定义为字典类型,但是后续循环时用数字索引left_LIST[i]取值,字典不支持数字下标访问,直接触发报错。你实际只需要存储null1上的自定义属性名列表,不需要保存属性值,不需要用字典。 - 节点名大小写不匹配:你查询别名时用的节点名是
blendShape1(S为大写),执行连接时写的节点名是blendshape1(s为小写),Maya节点名大小写敏感,会触发找不到节点的报错。 aliasAttr返回值结构不匹配:cmds.aliasAttr的查询结果是「自定义别名、原属性名」交替排列的列表,直接按索引取会错位,需要提取偶数位的元素才是你需要的blendShape目标属性名。
修正后代码
import maya.cmds as cmds # 提取null1上的可关键帧自定义属性名列表 left_attr_list = cmds.listAttr('null1', k=True, ud=True) or [] # 提取blendShape1的别名列表,按步长2取偶数位元素即为自定义目标别名 right_alias_raw = cmds.aliasAttr('blendShape1', q=True) or [] right_attr_list = right_alias_raw[::2] # 校验属性数量一致后批量连接 if len(left_attr_list) == len(right_attr_list): for left_attr, right_attr in zip(left_attr_list, right_attr_list): cmds.connectAttr(f'null1.{left_attr}', f'blendShape1.{right_attr}') else: print(f"属性数量不匹配:左侧{len(left_attr_list)}个,右侧{len(right_attr_list)}个")
内容的提问来源于stack exchange,提问作者Stathis Nikou
相关产品推荐
相关产品推荐

