首页 > 解决方案 > For循环并按名称选择

问题描述

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

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

是正确的方法。但我需要一种方法来仅选择名称为“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))

标签: pythonfor-loopblender

解决方案


您可以使用它dict.items来获取对象中的键、值对。然后,您可以使用它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]
    

推荐阅读