我使用了Python API在攪拌機一「散點圖」改變了我對象的名稱。 數據是一個將名稱映射到3D點列表的字典,因此有名稱的點雲。攪拌機
我需要在每個雲看單獨或隱藏其他人,這是我的設置:
- 在字典每個名字,我創建一個空的對象
- 屬於此每個3D點名字,我創建了一個小立方體,將它放置並重新放置到空物體上。現在
我可以隱藏在3D視圖中的父對象。 程序工作正常,但有一個奇怪的問題:名字很重要,我需要能夠找到他們在sceneview。但攪拌機更改名稱。像「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
?
UPDATE
澄清:不要緊,該地塊內的點被重新命名。像「plotnameMesh.001」和「plotnameMesh.002」是沒有問題的。但父對象被重命名爲。 實際上,將「網格」附加到對象名稱的唯一目的是保持頂層曲線名唯一。
職位通常會有所不同,但不能保證。感謝您提供關於如何刪除給定名稱的對象的提示。這可能非常有用。但它不能解決我的具體問題,即攪拌器更改對象的名稱。 – lhk
但這個循環就是你所得到的重複 - 在位置每個位置要創建一個名爲'plotname +「網格」的對象' - 第一個將獲得該名稱和其他人將獲得數字擴展添加。 – sambler
哦對不起。我的問題不夠確切。循環中的名稱更改是可以接受的。問題在於頂級對象。他們也改變了。帶「mesh」的對象是否重命名並不重要。我只需要確保plotnames輸入網格的對象不會改變 – lhk