eliemichel / MapsModelsImporter

A Blender add-on to import models from google maps

Home Page:https://blog.exppad.com/article/importing-actual-3d-models-from-google-maps

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

IDEA Improvement: Need Help to recursively import RDCs from a Folder and store each element into a Collection

fpibbs opened this issue · 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)

image

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!