Groups and collection: create group from collection
You could still create groups as before, with Ctl + G. This will create a group with a single visible collection. However you can also create a group from an existing collection. Just go to the menu you get in the outliner when clicking in a collection and pick "Create Group". Remember to instance the group afterwards, or link it into a new scene or file. The group and the collection are not kept in sync afterwards. You need to manually edit the group for further changes.
This commit is contained in:
76
tests/python/view_layer/test_group_d.py
Normal file
76
tests/python/view_layer/test_group_d.py
Normal file
@@ -0,0 +1,76 @@
|
||||
# ############################################################
|
||||
# Importing - Same For All Render Layer Tests
|
||||
# ############################################################
|
||||
|
||||
import unittest
|
||||
import os
|
||||
import sys
|
||||
|
||||
from view_layer_common import *
|
||||
|
||||
|
||||
# ############################################################
|
||||
# Testing
|
||||
# ############################################################
|
||||
|
||||
class UnitTesting(ViewLayerTesting):
|
||||
def test_group_write_load(self):
|
||||
"""
|
||||
See if saving/loading is working for groups
|
||||
"""
|
||||
import bpy
|
||||
scene = bpy.context.scene
|
||||
layer_collection = bpy.context.layer_collection
|
||||
|
||||
while len(scene.view_layers) > 1:
|
||||
scene.view_layers.remove(scene.view_layers[1])
|
||||
|
||||
# create group
|
||||
group = layer_collection.create_group()
|
||||
|
||||
self.assertEqual(1, len(bpy.data.groups))
|
||||
self.assertEqual(1, bpy.data.groups[0].users)
|
||||
self.assertEqual(3, len(bpy.data.groups[0].objects))
|
||||
|
||||
import os
|
||||
import tempfile
|
||||
with tempfile.TemporaryDirectory() as dirpath:
|
||||
filepath = os.path.join(dirpath, 'layers.blend')
|
||||
|
||||
for i in range(3):
|
||||
# save and re-open file
|
||||
bpy.ops.wm.save_mainfile('EXEC_DEFAULT', filepath=filepath)
|
||||
bpy.ops.wm.open_mainfile('EXEC_DEFAULT', filepath=filepath)
|
||||
|
||||
self.assertEqual(1, len(bpy.data.groups))
|
||||
self.assertEqual(1, bpy.data.groups[0].users)
|
||||
self.assertEqual(3, len(bpy.data.groups[0].objects))
|
||||
|
||||
|
||||
# empty the group of objects
|
||||
group = bpy.data.groups[0]
|
||||
while group.objects:
|
||||
group.view_layer.collections[0].collection.objects.unlink(group.objects[0])
|
||||
|
||||
# save and re-open file
|
||||
bpy.ops.wm.save_mainfile('EXEC_DEFAULT', filepath=filepath)
|
||||
bpy.ops.wm.open_mainfile('EXEC_DEFAULT', filepath=filepath)
|
||||
|
||||
self.assertEqual(1, len(bpy.data.groups))
|
||||
self.assertEqual(0, bpy.data.groups[0].users)
|
||||
self.assertEqual(0, len(bpy.data.groups[0].objects))
|
||||
|
||||
# save and re-open file
|
||||
bpy.ops.wm.save_mainfile('EXEC_DEFAULT', filepath=filepath)
|
||||
bpy.ops.wm.open_mainfile('EXEC_DEFAULT', filepath=filepath)
|
||||
|
||||
self.assertEqual(0, len(bpy.data.groups))
|
||||
|
||||
|
||||
# ############################################################
|
||||
# Main - Same For All Render Layer Tests
|
||||
# ############################################################
|
||||
|
||||
if __name__ == '__main__':
|
||||
UnitTesting._extra_arguments = setup_extra_arguments(__file__)
|
||||
unittest.main()
|
Reference in New Issue
Block a user