diff options
author | Sybren A. Stüvel <sybren@stuvel.eu> | 2017-04-20 13:01:31 +0300 |
---|---|---|
committer | Sybren A. Stüvel <sybren@stuvel.eu> | 2017-04-20 13:01:31 +0300 |
commit | ae79eb2105de519bcc408256d25272efa3195818 (patch) | |
tree | 5f151f32a93efca21494334a6a12cf0f25699479 | |
parent | 31c644b657d3dbfaa170e5893fcd69ea5b87d670 (diff) |
Alembic import: select imported objects
When the Alembic import is finished, all imported objects are selected.
-rw-r--r-- | source/blender/alembic/intern/alembic_capi.cc | 5 | ||||
-rw-r--r-- | tests/python/bl_alembic_import_test.py | 22 |
2 files changed, 26 insertions, 1 deletions
diff --git a/source/blender/alembic/intern/alembic_capi.cc b/source/blender/alembic/intern/alembic_capi.cc index 104b19beaf0..e44f66b7e56 100644 --- a/source/blender/alembic/intern/alembic_capi.cc +++ b/source/blender/alembic/intern/alembic_capi.cc @@ -795,13 +795,16 @@ static void import_endjob(void *user_data) } else { /* Add object to scene. */ + Base *base; + BKE_scene_base_deselect_all(data->scene); for (iter = data->readers.begin(); iter != data->readers.end(); ++iter) { Object *ob = (*iter)->object(); 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); } diff --git a/tests/python/bl_alembic_import_test.py b/tests/python/bl_alembic_import_test.py index fd43e404e82..cd23183ec06 100644 --- a/tests/python/bl_alembic_import_test.py +++ b/tests/python/bl_alembic_import_test.py @@ -63,6 +63,28 @@ class SimpleImportTest(unittest.TestCase): self.assertEqual(objects['Cube_003'], objects['Cube_005'].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(): global args |