Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSybren A. Stüvel <sybren@stuvel.eu>2017-04-20 13:01:31 +0300
committerSybren A. Stüvel <sybren@stuvel.eu>2017-04-20 13:01:31 +0300
commitae79eb2105de519bcc408256d25272efa3195818 (patch)
tree5f151f32a93efca21494334a6a12cf0f25699479
parent31c644b657d3dbfaa170e5893fcd69ea5b87d670 (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.cc5
-rw-r--r--tests/python/bl_alembic_import_test.py22
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