python - Blender 更改了我的对象的名称

标签 python blender blender-2.76

我在 blender 中使用 python API 绘制“散点图”。 数据是一个将名称映射到 3D 点列表的字典,因此存在命名的点云。

我需要单独查看每个云并隐藏其他云,这是我的设置:

  • 为字典中的每个名字创建一个空对象
  • 对于属于此名称的每个 3D 点,我创建一个小立方体,将其定位并将其重新设置为空对象。

现在我可以在 3D View 中隐藏父对象。 该程序运行良好,但存在一个奇怪的问题:名称很重要,我需要能够在场景 View 中找到它们。但是 blender 改变了名字。像“TopDown”这样的名称会变成“TopDown.001”。尽管没有其他对象具有此名称,但仍会发生这种情况。

这是我的代码:

for plotname, positions in points.items():

    bpy.ops.object.add(type='EMPTY')
    bpy.context.active_object.name = plotname
    bpy.context.active_object.location=(0,0,0)
    print(plotname)               #<---------------here the name is still correct

    for position in positions:
        me = bpy.data.meshes.new(plotname + 'Mesh')
        ob = bpy.data.objects.new(plotname+"Mesh", me)
        ob.location = (position[0], position[1], position[2])
        ob.show_name = True

        bpy.context.scene.objects.link(ob)

        me.from_pydata(verts_loc, [], faces)

        me.update(calc_edges=True)
        ob.parent=bpy.context.active_object

实际程序有点长,verts_locfaces在这段代码之前已经设置好了。它们代表一个立方体。

如何确保 plotname 保持 plotname 而不会变成 plotname.001

更新

澄清:重命名绘图中的点并不重要。像“plotnameMesh.001”和“plotnameMesh.002”这样的东西是没有问题的。但是父对象被重命名为。 事实上,将“Mesh”附加到对象名称的唯一目的是保持顶层绘图名称的唯一性。

最佳答案

for position in positions: 表示您正在为每个 plotname 在不同位置创建多个对象。一个将保留情节名称,而其他人将获得数字扩展名。

for position in positions:
    me = bpy.data.meshes.new(plotname + 'Mesh')
    ob = bpy.data.objects.new(plotname+"Mesh", me)

每个位置都是唯一的还是要在每个位置添加多个对象?

您还需要确保在重新运行脚本之前删除之前的创建。

当您有许多具有相似名称的对象时,您可以使用Select->Select Pattern 来选择它们。在 python 中,你可以用

[setattr(obj, 'select', True) for obj in bpy.data.objects if obj.name.startswith(plotname)]

关于python - Blender 更改了我的对象的名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34770929/

相关文章:

python - 多排序 Python

blender - 为什么 Blender 改变了我的尺寸?

python - 您建议使用哪种 Python 方法来检查 whois 数据库记录?

Python访问父对象实例

python - 试图绘制的 Pandas 类型错误

python - 使用类的 __call__ 方法作为 Numpy curve_fit 的输入

python - 我如何用 Python 读出 Blender 中的自定义属性?

ios - 带有 .dae 的 SCNNode 静态主体导致问题