Alembic import: select imported objects
When the Alembic import is finished, all imported objects are selected.
This commit is contained in:
@@ -795,13 +795,16 @@ static void import_endjob(void *user_data)
|
|||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
/* Add object to scene. */
|
/* Add object to scene. */
|
||||||
|
Base *base;
|
||||||
|
|
||||||
BKE_scene_base_deselect_all(data->scene);
|
BKE_scene_base_deselect_all(data->scene);
|
||||||
|
|
||||||
for (iter = data->readers.begin(); iter != data->readers.end(); ++iter) {
|
for (iter = data->readers.begin(); iter != data->readers.end(); ++iter) {
|
||||||
Object *ob = (*iter)->object();
|
Object *ob = (*iter)->object();
|
||||||
ob->lay = data->scene->lay;
|
ob->lay = data->scene->lay;
|
||||||
|
|
||||||
BKE_scene_base_add(data->scene, ob);
|
base = BKE_scene_base_add(data->scene, ob);
|
||||||
|
BKE_scene_base_select(data->scene, base);
|
||||||
|
|
||||||
DAG_id_tag_update_ex(data->bmain, &ob->id, OB_RECALC_OB | OB_RECALC_DATA | OB_RECALC_TIME);
|
DAG_id_tag_update_ex(data->bmain, &ob->id, OB_RECALC_OB | OB_RECALC_DATA | OB_RECALC_TIME);
|
||||||
}
|
}
|
||||||
|
@@ -63,6 +63,28 @@ class SimpleImportTest(unittest.TestCase):
|
|||||||
self.assertEqual(objects['Cube_003'], objects['Cube_005'].parent)
|
self.assertEqual(objects['Cube_003'], objects['Cube_005'].parent)
|
||||||
self.assertEqual(objects['Cube_003'], objects['Cube_006'].parent)
|
self.assertEqual(objects['Cube_003'], objects['Cube_006'].parent)
|
||||||
|
|
||||||
|
def test_select_after_import(self):
|
||||||
|
# Add a sphere, so that there is something in the scene, selected, and active,
|
||||||
|
# before we do the Alembic import.
|
||||||
|
bpy.ops.mesh.primitive_uv_sphere_add()
|
||||||
|
sphere = bpy.context.active_object
|
||||||
|
self.assertEqual('Sphere', sphere.name)
|
||||||
|
self.assertEqual([sphere], bpy.context.selected_objects)
|
||||||
|
|
||||||
|
bpy.ops.wm.alembic_import(
|
||||||
|
filepath=str(self.testdir / "cubes-hierarchy.abc"),
|
||||||
|
as_background_job=False)
|
||||||
|
|
||||||
|
# The active object is probably the first one that was imported, but this
|
||||||
|
# behaviour is not defined. At least it should be one of the cubes, and
|
||||||
|
# not the sphere.
|
||||||
|
self.assertNotEqual(sphere, bpy.context.active_object)
|
||||||
|
self.assertTrue('Cube' in bpy.context.active_object.name)
|
||||||
|
|
||||||
|
# All cubes should be selected, but the sphere shouldn't be.
|
||||||
|
for ob in bpy.data.objects:
|
||||||
|
self.assertEqual('Cube' in ob.name, ob.select)
|
||||||
|
|
||||||
|
|
||||||
def main():
|
def main():
|
||||||
global args
|
global args
|
||||||
|
Reference in New Issue
Block a user