I may be dump but did someone acheive to recreate a folder tree inside Assets browser ?
Here my code
class CUSTOM_OT_GenerateCatalogs(Operator):
bl_idname = "custom.generate_catalogs"
bl_label = "Generate Catalogs"
def execute(self, context):
selected_folder = context.scene.selected_folder
if not selected_folder:
self.report({'ERROR'}, "Please select a folder.")
return {'CANCELLED'}
if not os.path.isdir(selected_folder):
self.report({'ERROR'}, "Selected folder is not valid.")
return {'CANCELLED'}
try:
self.create_catalogs(selected_folder)
except RuntimeError:
self.report({'ERROR'}, "Cannot create catalog. Please select an asset library.")
return {'CANCELLED'}
return {'FINISHED'}
def create_catalogs(self, folder_path):
root_collection = bpy.context.scene.collection
if not root_collection:
root_collection = bpy.data.collections.new("Root")
bpy.context.scene.collection.children.link(root_collection)
for root, dirs, _ in os.walk(folder_path):
for dir_name in dirs:
catalog_name = os.path.relpath(os.path.join(root, dir_name), folder_path)
parent_path = os.path.dirname(catalog_name)
if parent_path == '.':
parent_path = '' # For the root folder
bpy.ops.asset.catalog_new(parent_path=parent_path)
print("Created catalog:", catalog_name)
This code work a bit but as long as it’s not possible to rename a catalog, I can only have a list of Catalog
(the default name)
I can’t understand how they do it in this plugin https://github.com/Poly-Haven/polyhavenassets/tree/main