def importResources(restuple, filepath=None): """Accepts an iterable of iterables describing resource objects to import. For instance, reslist=(('joint', 'continuous'), ('interface', 'default', 'bidirectional')) would import the resource objects named 'joint_continuous' and 'interface_default_bidirectional'. Args: restuple: iterable of iterables containing import objects filepath: path to file from which to load resource (Default value = None) Returns(tuple of bpy.types.Object): imported objects Returns: """ currentscene = bpy.context.scene.name bUtils.switchToScene('resources') # avoid importing the same objects multiple times imported_objects = [ nUtils.stripNamespaceFromName(obj.name) for obj in bpy.data.scenes['resources'].objects ] requested_objects = ['_'.join(resource) for resource in restuple] new_objects = [ obj for obj in requested_objects if obj not in imported_objects ] # if no filepath is provided, use the path from the preferences if not filepath: filepath = os.path.join(bUtils.getPhobosConfigPath(), 'resources', 'resources.blend') print(filepath) # import new objects from resources.blend if new_objects: with bpy.data.libraries.load(filepath) as (data_from, data_to): objects = [{ 'name': name } for name in new_objects if name in data_from.objects] if objects: bpy.ops.wm.append(directory=filepath + "/Object/", files=objects) else: log('Resource objects could not be imported.', 'ERROR') bUtils.switchToScene(currentscene) return None objects = bpy.context.selected_objects for obj in objects: nUtils.addNamespace(obj, 'resource') bUtils.switchToScene(currentscene) return objects
def importResources(restuple, filepath=None): """Accepts an iterable of iterables describing resource objects to import. For instance, reslist=(('joint', 'continuous'), ('interface', 'default', 'bidirectional')) would import the resource objects named 'joint_continuous' and 'interface_default_bidirectional'. Args: restuple: iterable of iterables containing import objects filepath: path to file from which to load resource (Default value = None) Returns(tuple of bpy.types.Object): imported objects Returns: """ currentscene = bpy.context.scene.name bUtils.switchToScene('resources') # avoid importing the same objects multiple times imported_objects = [ nUtils.stripNamespaceFromName(obj.name) for obj in bpy.data.scenes['resources'].objects ] requested_objects = ['_'.join(resource) for resource in restuple] new_objects = [obj for obj in requested_objects if obj not in imported_objects] # if no filepath is provided, use the path from the preferences if not filepath: filepath = os.path.join(bUtils.getPhobosConfigPath(), 'resources', 'resources.blend') print(filepath) # import new objects from resources.blend if new_objects: with bpy.data.libraries.load(filepath) as (data_from, data_to): objects = [{'name': name} for name in new_objects if name in data_from.objects] if objects: bpy.ops.wm.append(directory=filepath + "/Object/", files=objects) else: log('Resource objects could not be imported.', 'ERROR') bUtils.switchToScene(currentscene) return None objects = bpy.context.selected_objects for obj in objects: nUtils.addNamespace(obj, 'resource') bUtils.switchToScene(currentscene) return objects