我正在使用 python API 在搅拌机中绘制“散点图”。数据是将名称映射到 3D 点列表的字典,因此存在命名的点云。
我需要单独查看每个云并隐藏其他云,这是我的设置:
- 对于字典中的每个名称,我创建一个空对象
- 对于属于此名称的每个 3D 点,我创建一个小立方体,将其定位并将其重新设置为空对象。
现在我可以在 3D 视图中隐藏父对象。该程序运行良好,但有一个奇怪的问题:名称很重要,我需要能够在场景视图中找到它们。但是搅拌机改变了名字。像“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_loc
并且faces
在这个片段之前已经设置好了。它们代表一个立方体。
我怎样才能确保plotname
留下plotname
而不变成plotname.001
?
更新
澄清:情节中的点被重命名并不重要。像“plotnameMesh.001”和“plotnameMesh.002”这样的东西没问题。但是父对象被重命名为。事实上,将“Mesh”附加到对象名称的唯一目的是保持顶层绘图名称的唯一性。