python - 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))
解决方案
您可以使用它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]
推荐阅读
- mysql - 不可更改的用户名应该是 MySQL 表的主键吗?
- sql - 如何仅对 SQL 中的数据子集进行排名
- r - 无法访问 Web 上的数据 -URL HTTP 状态为“403 Forbidden”-
- visual-studio-code - vscode 开发容器如何使用单独的 docker-in-docker 环境?
- python - AttributeError: module 'chess' has no attribute 'Board' 棋盘错误
- python - 有谁知道如何在pygame中进行键盘按下。我已经尝试了所有我能想到的
- html - rvest - 仅选择类下的某些 href
- angular - 角卡在不调用函数的情况下翻转回来
- reactjs - 抛出错误给我 API 错误,而不是我写的
- parsing - 为 wiki 制作一个更简单的解析器函数