For 循环和 select 按名称

For Loop and select by name

我想将脚本应用于未定义数量的对象。我认为:

for obj in bpy.data.objects:
     #do something 

是正确的方法。但是我需要一种方法 select 仅使用名称为“Value”.xxx 的对象并获取数字 xxx 以调整脚本中的第 2 行和第 3 行

我的实际脚本:

def num_change(scene, depsgraph):
   value_text = bpy.data.objects['Value.001']
   mat = bpy.data.materials['Instrument.001']
   mat = mat.evaluated_get(depsgraph)
   nodes = mat.node_tree.nodes
   value = nodes.get("Value")
   value_text.data.body = str(round(value.outputs[0].default_value, 2))

您可以使用 dict.items to fetch the key, value pairs in your object. You can then use re.match 来确认密钥匹配 Value.xxx 并提取数字部分,然后您可以使用它来创建其他密钥。例如:

import re

for k, value_text in bpy.data.objects.items():
    m = re.match(r'Value\.(\d{3})$', k)
    if m is None:
        continue
    num = m.group(1)
    mat = bpy.data.materials['Instrument.' + num]
    

除了使用键,您还可以使用名称属性访问对象的名称。其余代码与

建议的相同
for obj in bpy.data.objects:
    print(obj.name)