def load(locator): """Makes a preview model for a locator and link it to it NOTE: locator preview model path must be set :param locator: locator object to which preview model should be set :type locator: bpy.types.Object :return: True if preview model was set; False otherwise :rtype: bool """ load_model = True abs_filepath = "" if not locator.scs_props.locator_show_preview_model: load_model = False else: filepath = locator.scs_props.locator_preview_model_path if filepath: if filepath.lower().endswith(".pim"): abs_filepath = _path_utils.get_abs_path(filepath, skip_mod_check=True) if not os.path.isfile(abs_filepath): lprint( "W Locator %r has invalid path to Preview Model PIM file: %r", (locator.name, _path_utils.readable_norm(abs_filepath))) load_model = False else: lprint( "W Locator %r has invalid path to Preview Model PIM file: %r", (locator.name, _path_utils.readable_norm(filepath))) load_model = False else: load_model = False if load_model: unload(locator) prem_name = str("prem_" + locator.name) obj = _get_model_mesh(locator, prem_name) if not obj: from io_scs_tools.imp import pim as _pim_import obj = _pim_import.load_pim_file(bpy.context, abs_filepath, preview_model=True) obj.name = prem_name obj.data.name = prem_name obj.data.scs_props.locator_preview_model_path = locator.scs_props.locator_preview_model_path obj.select = False link(locator, obj) return True else: return False
def load(locator): """Makes a preview model for a locator and link it to it NOTE: locator preview model path must be set :param locator: locator object to which preview model should be set :type locator: bpy.types.Object :return: True if preview model was set; False otherwise :rtype: bool """ load_model = True abs_filepath = "" if not locator.scs_props.locator_show_preview_model: load_model = False else: filepath = locator.scs_props.locator_preview_model_path if filepath: if filepath.lower().endswith(".pim"): abs_filepath = _path_utils.get_abs_path(filepath, skip_mod_check=True) if not os.path.isfile(abs_filepath): lprint("W Locator %r has invalid path to Preview Model PIM file: %r", (locator.name, abs_filepath.replace("\\", "/"))) load_model = False else: lprint("W Locator %r has invalid path to Preview Model PIM file: %r", (locator.name, filepath.replace("\\", "/"))) load_model = False else: load_model = False if load_model: unload(locator) prem_name = str("prem_" + locator.name) obj = _get_model_mesh(locator, prem_name) if not obj: from io_scs_tools.imp import pim as _pim_import obj = _pim_import.load_pim_file(bpy.context, abs_filepath, preview_model=True) obj.name = prem_name obj.data.name = prem_name obj.data.scs_props.locator_preview_model_path = locator.scs_props.locator_preview_model_path obj.select = False link(locator, obj) return True else: return False
def load(locator, deep_reload=False): """Makes a preview model for a locator and link it to it NOTE: locator preview model path must be set :param locator: locator object to which preview model should be set :type locator: bpy.types.Object :param deep_reload: should model be reloaded completely? Use in case model mesh should be freshly loaded from disc :type deep_reload: bool :return: True if preview model was set; False otherwise :rtype: bool """ load_model = True abs_filepath = "" if not locator.scs_props.locator_show_preview_model: load_model = False else: filepath = locator.scs_props.locator_preview_model_path if filepath: if filepath.lower().endswith(".pim"): abs_filepath = _path_utils.get_abs_path(filepath, skip_mod_check=True) if not os.path.isfile(abs_filepath): lprint("W Locator %r has invalid path to Preview Model PIM file: %r", (locator.name, _path_utils.readable_norm(abs_filepath))) load_model = False else: lprint("W Locator %r has invalid path to Preview Model PIM file: %r", (locator.name, _path_utils.readable_norm(filepath))) load_model = False else: load_model = False if load_model: unload(locator, do_mesh_unlink=deep_reload) prem_name = str("prem_" + locator.name) obj = _get_model_mesh(locator, prem_name) if not obj: from io_scs_tools.imp import pim as _pim_import obj = _pim_import.load_pim_file(bpy.context, abs_filepath, preview_model=True) # in case used preview model doesn't have any mesh, abort loading, report error and reset path # Path has to be reset to prevent loading preview model over and over again # from possible callbacks trying to fix not present preview model if not obj: message = "Selected PIM model doesn't have any mesh inside, so it can not be used as a preview model." bpy.ops.wm.show_warning_message('INVOKE_DEFAULT', is_modal=True, title="Preview Model Load Error!", message=message, width=500, height=100) lprint("E " + message) locator.scs_props.locator_preview_model_path = "" return False obj.name = prem_name obj.data.name = prem_name obj.data.scs_props.locator_preview_model_path = locator.scs_props.locator_preview_model_path obj.select = False link(locator, obj) return True else: return False
def load(locator): """Makes a preview model for a locator and link it to it NOTE: locator preview model path must be set :param locator: locator object to which preview model should be set :type locator: bpy.types.Object :return: True if preview model was set; False otherwise :rtype: bool """ load_model = True abs_filepath = "" if not locator.scs_props.locator_show_preview_model: load_model = False else: filepath = locator.scs_props.locator_preview_model_path if filepath: if filepath.lower().endswith(".pim"): abs_filepath = _path_utils.get_abs_path(filepath) if not os.path.isfile(abs_filepath): lprint( "W Locator %r has invalid path to Preview Model PIM file: %r", (locator.name, abs_filepath.replace("\\", "/"))) load_model = False else: lprint( "W Locator %r has invalid path to Preview Model PIM file: %r", (locator.name, filepath.replace("\\", "/"))) load_model = False else: load_model = False if load_model: unload(locator) prem_name = str("prem_" + locator.name) obj = _get_model_mesh(locator, prem_name) if not obj: from io_scs_tools.imp import pim as _pim_import obj = _pim_import.load_pim_file( bpy.context, abs_filepath, preview_model=True, looks_and_materials=False, textures=False, uv=False, vc=False, vg=False, weld_smoothed=False, bones=False, shadow_casters=False, create_locators=False, parts_and_variants=False, ) obj.name = prem_name obj.data.name = prem_name obj.data.scs_props.locator_preview_model_path = locator.scs_props.locator_preview_model_path obj.select = False link(locator, obj) return True else: return False