IO: Option to import each 3DS file on a new collection #105232
@ -107,6 +107,12 @@ class Import3DS(bpy.types.Operator, ImportHelper):
|
||||
description="Read the 3D cursor location",
|
||||
default=False,
|
||||
)
|
||||
use_collection: BoolProperty(
|
||||
name="Collection",
|
||||
description="Create a new collection",
|
||||
default=False,
|
||||
)
|
||||
|
||||
|
||||
def execute(self, context):
|
||||
from . import import_3ds
|
||||
@ -166,6 +172,9 @@ class MAX3DS_PT_import_include(bpy.types.Panel):
|
||||
layrow.prop(operator, "use_keyframes")
|
||||
layrow.label(text="", icon='ANIM' if operator.use_keyframes else 'DECORATE_DRIVER')
|
||||
layrow = layout.row(align=True)
|
||||
layrow.prop(operator, "use_collection")
|
||||
layrow.label(text="", icon='OUTLINER_COLLECTION' if operator.use_collection else 'GROUP')
|
||||
layrow = layout.row(align=True)
|
||||
layrow.prop(operator, "use_cursor")
|
||||
layrow.label(text="", icon='PIVOT_CURSOR' if operator.use_cursor else 'CURSOR')
|
||||
|
||||
|
@ -10,6 +10,7 @@ import struct
|
||||
import mathutils
|
||||
from bpy_extras.image_utils import load_image
|
||||
from bpy_extras.node_shader_utils import PrincipledBSDFWrapper
|
||||
from pathlib import Path
|
||||
|
||||
BOUNDS_3DS = []
|
||||
|
||||
@ -1772,11 +1773,23 @@ def load_3ds(filepath, context, CONSTRAIN=10.0, UNITS=False, IMAGE_SEARCH=True,
|
||||
|
||||
def load(operator, context, files=None, directory="", filepath="", constrain_size=0.0, use_scene_unit=False,
|
||||
use_image_search=True, object_filter=None, use_world_matrix=False, use_keyframes=True,
|
||||
use_apply_transform=True, global_matrix=None, use_cursor=False, use_center_pivot=False):
|
||||
use_apply_transform=True, global_matrix=None, use_cursor=False, use_center_pivot=False, use_collection=False):
|
||||
|
||||
for f in files:
|
||||
load_3ds(os.path.join(directory, f.name), context, CONSTRAIN=constrain_size, UNITS=use_scene_unit,
|
||||
# Get the active collection
|
||||
collection_init = bpy.context.view_layer.active_layer_collection.collection
|
||||
|
||||
# Load each selected file
|
||||
for file in files:
|
||||
# Create new collections if activated (collection name = 3ds file name)
|
||||
NRGSille marked this conversation as resolved
|
||||
if use_collection:
|
||||
collection = bpy.data.collections.new(Path(file.name).stem)
|
||||
bpy.context.scene.collection.children.link(collection)
|
||||
bpy.context.view_layer.active_layer_collection = bpy.context.view_layer.layer_collection.children[collection.name]
|
||||
load_3ds(Path(directory, file.name), context, CONSTRAIN=constrain_size, UNITS=use_scene_unit,
|
||||
IMAGE_SEARCH=use_image_search, FILTER=object_filter, WORLD_MATRIX=use_world_matrix, KEYFRAME=use_keyframes,
|
||||
APPLY_MATRIX=use_apply_transform, CONVERSE=global_matrix, CURSOR=use_cursor, PIVOT=use_center_pivot,)
|
||||
|
||||
# Retrive the initial collection as active
|
||||
bpy.context.view_layer.active_layer_collection = bpy.context.view_layer.layer_collection.children[collection_init.name]
|
||||
|
||||
return {'FINISHED'}
|
||||
|
Loading…
Reference in New Issue
Block a user
found a little error in line 1784 (below) must be replaced with
if use_collection:
Yes, I forgot this fix.