Hallo,
ich habe ein Python Skript für Blender um alle .fbx Dateien zu importieren.
Dies wollte ich jetzt erweitern sodass die Unterordner auch mit ausgelesen werden und dafür Collectionen erstellt werden wo die .fbx Dateien dann einkommen.
Das Script läuft ohne Fehlermeldung durch, importiert aber nur die .fbx files aus dem fbx_folder Pfad .
Die Unterordner werden weder als Collection erstellt noch deren Inhalt importiert.
ich vermute das es an os.path.isdir in Zeile 39 liegt. Habe Ewigkeiten nach eine Funktion gesucht die einen Ordner ausgibt.
Weiß auch nicht ob ich die 100% richtig eingebunden habe.
Könnte sich das Skript mal jemand anschauen der etwas Ahnung davon hat?
MfG
Code: ImportFBX.py
## Importscript for .FBX .fbx files
## only works inside the folder path
## no subfolders right now!!!
## you need to edit the path for any subfolder
## no backslash support
## no double slash support
## To move the files into a collection in Blender, create a new collection and highlight it before running the script.
## load Blender Python API's
import bpy, os, os.path
# Passe den Pfad zu deinem FBX-Dateien-Ordner an
## Customize the path to your FBX files folder
fbx_folder = "C:/Users/warsh/Documents/Unreal Projects/Blender/Diriyah/Mesh/"
## Example for the subfolders, script must be re-executed for each individual line.
# fbx_folder = "C:/Users/warsh/Documents/Unreal Projects/Blender/Diriyah/Mesh/Building01/"
# fbx_folder = "C:/Users/warsh/Documents/Unreal Projects/Blender/Diriyah/Mesh/Building02/"
# fbx_folder = "C:/Users/warsh/Documents/Unreal Projects/Blender/Diriyah/Mesh/Building03/"
# fbx_folder = "C:/Users/warsh/Documents/Unreal Projects/Blender/Diriyah/Mesh/Building04/"
# fbx_folder = "C:/Users/warsh/Documents/Unreal Projects/Blender/Diriyah/Mesh/Collide/"
# fbx_folder = "C:/Users/warsh/Documents/Unreal Projects/Blender/Diriyah/Mesh/"
# Liste aller FBX-Dateien im Verzeichnis!
## List of all FBX files in the folder!
fbx_files = [f for f in os.listdir(fbx_folder) if f.endswith('.fbx') or f.endswith('.FBX')]
# Schleife durch die Liste der FBX-Dateien
## Loop through the list of FBX files
for fbx_file in fbx_files:
file_path = os.path.join(fbx_folder, fbx_file)
# Importiere die FBX-Dateien
## Import the FBX files
bpy.ops.import_scene.fbx(filepath=file_path)
# Liste aller Unterordner im Verzeichnis!
## List of all Subfolders in the folder!
fbx_subfolders = [f for f in os.listdir(fbx_folder) if os.path.isdir(f)]
# Schleife durch die Liste der Unterordner
## Loop through the list of Subfolders
for fbx_subfolder in fbx_subfolders:
sub_path = os.path.join(fbx_folder, fbx_subfolder)
# neue Collection mit Namen des Unterordners
## New collection with the name od the subfolder
myCol = bpy.data.collections.new(fbx_subfolder)
bpy.context.scene.collection.children.link(myCol)
# Liste aller FBX-Dateien im Unterordner
## List of all FBX files in the subfolder
fbx_subfiles = [f for f in os.listdir(sub_path) if f.endswith('.fbx') or f.endswith('.FBX')]
# Schleife durch die Liste der FBX-Dateien
## Loop through the list of FBX files
for fbx_subfile in fbx_subfiles:
file_subpath = os.path.join(fbx_folder,fbx_subfolder, fbx_subfile)
# Importiere die FBX-Dateien
## Import the FBX files
bpy.ops.import_scene.fbx(filepath=file_subpath)
# Link die FBX-Dateien zur Collection
## Link the FBX files to the collection
myCol.objects.link(fbx)
# Löse die Verlinkung der FBX Datei
## Unlink the FBX Datei
bpy.context.scene.collection.objects.unlink(fbx)
Alles anzeigen