IDEA Improvement: Need Help to recursively import RDCs from a Folder and store each element into a Collection
fpibbs opened this issue · 2 comments
As written in the title and kindly need @eliemichel help, my script is almost ready but I have some troubles because it stores only the first element on the collection under its named from file.
Hope it can help:
import bpy
import os
import sys
import glob
directory_im = 'C:/Users/fcapp/Desktop/LowPoly2/'
files = glob.glob(directory_im + ".rdc")
for f in files:
head, tail = os.path.split(f)
collection_name = tail.replace('.rdc', '')
bpy.ops.import_rdc.google_maps(filepath=(f), filter_glob=".rdc", max_blocks=-1)
myCol = bpy.data.collections.new(collection_name)
bpy.context.scene.collection.children.link(myCol)
for ob in bpy.context.selected_objects:
myCol.objects.link(ob)
Where am I wrong? Need to solve that...
Current Configuration:
Blender 2.91, Maps Model Importer 0.3.5, RenderDOC 1.10, Chrome X64 on Windows Pro 87.0.4280.141( 64 bit)
Solved by RainerTrummer- (https://devtalk.blender.org/t/need-help-to-recursively-import-rdcs-from-a-folder-and-store-each-element-into-a-collection/17019/9?u=frankiepibbs) on Blender Forum:
import bpy
import os
import sys
import glob
directory_im = 'C:\\LowPoly2\\'
files = glob.glob(directory_im + "*.rdc")
# helper method to create a new LayerCollection
# also setting it to the active LayerCollection
# the Google Maps importer then puts the objects into that LayerCollection automatically
def create_coll(parent_layer_collection, collection_name):
new_col = bpy.data.collections.new(collection_name)
parent_layer_collection.collection.children.link(new_col)
new_child_layer_coll = parent_layer_collection.children.get(new_col.name)
bpy.context.view_layer.active_layer_collection = new_child_layer_coll
return new_child_layer_coll
# create a master collection to batch import the files to, or re-use the currently active collection in the scene - up to you
master_collection = bpy.context.view_layer.active_layer_collection
# iterate over files
for f in files:
head, tail = os.path.split(f)
collection_name = tail.replace('.rdc', '')
# create a new LayerCollection to import the objects to
# I am storing the reference to it here in case you need to run further actions on it
# e.g. changing color etc etc
myCol = create_coll(master_collection, collection_name)
# run the importer, it will work within the new sub-collection
bpy.ops.import_rdc.google_maps(filepath=(f), filter_glob=".rdc", max_blocks=-1)
Hope this Helps
Thanks for sharing this, I've added a link to this issue in the readme to help interested people to find it!