|
@@ -41,7 +41,12 @@ bl_info = {
|
|
|
def load_scene():
|
|
|
print("Loading Scene")
|
|
|
# load scene data
|
|
|
+ # create parent collections
|
|
|
+ create_parent_collections("01_Products")
|
|
|
+ create_parent_collections("02_Elements")
|
|
|
+ create_parent_collections("03_Shapes")
|
|
|
# append products
|
|
|
+
|
|
|
# append elements
|
|
|
# append shapes
|
|
|
# set lighting
|
|
@@ -54,6 +59,61 @@ def append_objects():
|
|
|
# set transforms
|
|
|
|
|
|
|
|
|
+def create_parent_collections(group_name: str):
|
|
|
+
|
|
|
+ if collection_exists(group_name):
|
|
|
+
|
|
|
+ remove_collection_and_objects(group_name)
|
|
|
+ else:
|
|
|
+ create_collection(group_name)
|
|
|
+
|
|
|
+
|
|
|
+def remove_collection_and_objects(collection_name):
|
|
|
+ oldObjects = list(bpy.data.collections[collection_name].all_objects)
|
|
|
+ for obj in oldObjects:
|
|
|
+ bpy.data.objects.remove(obj, do_unlink=True)
|
|
|
+
|
|
|
+ old_collection = bpy.data.collections[collection_name]
|
|
|
+ if old_collection is not None:
|
|
|
+ old_collection_names = get_subcollection_names(old_collection)
|
|
|
+ else:
|
|
|
+ print("Collection not found.")
|
|
|
+
|
|
|
+ # print line break
|
|
|
+ print("-----------------------------------------------------------------")
|
|
|
+ print(old_collection_names)
|
|
|
+ print("-----------------------------------------------------------------")
|
|
|
+ for old_collection_name in old_collection_names:
|
|
|
+ for collection in bpy.data.collections:
|
|
|
+ if collection.name == old_collection_name:
|
|
|
+ bpy.data.collections.remove(collection)
|
|
|
+
|
|
|
+ bpy.ops.outliner.orphans_purge(
|
|
|
+ do_local_ids=True, do_linked_ids=True, do_recursive=True
|
|
|
+ )
|
|
|
+
|
|
|
+
|
|
|
+def get_subcollection_names(collection):
|
|
|
+ subcollection_names = []
|
|
|
+
|
|
|
+ for child in collection.children:
|
|
|
+ subcollection_names.append(child.name)
|
|
|
+ subcollection_names.extend(get_subcollection_names(child))
|
|
|
+
|
|
|
+ return subcollection_names
|
|
|
+
|
|
|
+
|
|
|
+# function that checks if a collection exists
|
|
|
+def collection_exists(collection_name):
|
|
|
+ return collection_name in bpy.data.collections
|
|
|
+
|
|
|
+
|
|
|
+# function that creates a new collection and adds it to the scene
|
|
|
+def create_collection(collection_name):
|
|
|
+ new_collection = bpy.data.collections.new(collection_name)
|
|
|
+ bpy.context.scene.collection.children.link(new_collection)
|
|
|
+
|
|
|
+
|
|
|
# -------------------------------------------------------------------
|
|
|
# Operators
|
|
|
# -------------------------------------------------------------------
|
|
@@ -103,6 +163,7 @@ class ZSSD_PT_Main(ZSSDPanel, bpy.types.Panel):
|
|
|
# modify after making products
|
|
|
blender_classes = [
|
|
|
ZSSD_PT_Main,
|
|
|
+ ZSSD_OT_LoadScene,
|
|
|
]
|
|
|
|
|
|
|