我正在尝试更改我所选择的父对象的所有子对象的起始点。
现在,我正在循环所有选定的对象,看看其中一个是空的。我拿着这个空的,检查它有多少个子对象。我将我的3D光标移动到空的位置,对于每个子程序,我将它们更改为3D光标的原点。
当我选择一个对象时,这是可行的。当我选择更多的空对象时,我将我的所有子对象的起源设置为第一个选择的空。然而,当我打印出我的对象的位置时,它确实显示它应该被更新。由于某种原因,3D光标在分配一次之后就不能移动了;
for obj in bpy.context.selected_objects:
if obj is not None and obj.type == "EMPTY":
children = getChildren(obj)
for c in children:
print(c.name)
bpy.context.scene.cursor.location = obj.location
print("set location to : " + str(obj.location) + "from object :" + obj.name)
c.select_set(state=True)
bpy.context.view_layer.objects.active = c
print("set as active object: " + c.name)
bpy.ops.object.origin_set(type='ORIGIN_CURSOR')
print("set new coordinates")
def getChildren(myObject):
children = []
for ob in bpy.data.objects:
if ob.parent == myObject:
children.append(ob)
return children



发布于 2022-04-03 19:32:49
找出原因:)
当选择我的孩子时,他们选择了,我不得不添加bpy.ops.object.select_all(action='DESELECT')
命令在运行所选对象后清除所选内容。
https://stackoverflow.com/questions/71729081
复制相似问题