Source code for cgl.plugins.substance.utils

import logging
import os

from cgl.core.config.query import get_user_dir, AlchemyConfigManager
from cgl.core.utils.general import cgl_execute, cgl_copy
from cgl.core.utils.read_write import save_yaml

CFG = AlchemyConfigManager()


[docs] def get_textures(): import substance_painter texture_obj_list = substance_painter.textureset.all_texture_sets() texture_list = [] for set_obj in texture_obj_list: texture_list.append(set_obj.name()) return texture_list
[docs] def get_export_list(): export_list = [] texture_list = get_textures() for texture_set in texture_list: texture_dict = dict({"rootPath": texture_set}) export_list.append(texture_dict) return export_list
[docs] def open_substance_painter(): program_files_path = os.getenv("ProgramFiles") substance_path = os.path.join( program_files_path, "Adobe", "Adobe Substance 3D Painter", "Adobe Substance 3D Painter.exe", ) substance_path2 = os.path.join( program_files_path, "Allegorithmic", "Adobe Substance 3D Painter", "Adobe Substance 3D Painter.exe", ) if os.path.exists(substance_path): cmd = '"{}"'.format(substance_path) cgl_execute(cmd, new_window=True) return else: logging.error( "Cant Find Substance Painter Executable {}".format(substance_path) ) if os.path.exists(substance_path2): logging.error("Encountered older version of Substance - upgrade to use Alchemy")
[docs] def import_export_preset(preset_name): import substance_painter code_root = CFG.get_code_root() export_preset_path = ( os.path.join(code_root, "resources", "substance", "export_presets", preset_name) + ".spexp" ) try: new_resource = substance_painter.resource.import_session_resource( export_preset_path, substance_painter.resource.Usage.EXPORT ) except ValueError: logging.info(f"Error Could Not Find Preset at: {export_preset_path}") return None return new_resource
[docs] def save_mdl_path(path_object): user_config_file = CFG.user_config_file mdl_fbx_path = path_object.get_path() user_config_dict = CFG.user_config user_config_dict["current_substance_asset_path"] = mdl_fbx_path save_yaml(user_config_file, user_config_dict)
# user_config_dict = path_object.cfg.user_config # user_config_dict["paths"]["substance_asset_path"] = path_object.get_path() # # save_json(path_object.cfg.user_config_file, user_config_dict)
[docs] def copy_user_setup(): code_root = CFG.get_code_root() copy_source = os.path.join(code_root, "cgl", "plugins", "substance", "userSetup.py") user_path = get_user_dir() substance_startup_path = os.path.join( user_path, "Documents", "Adobe", "Adobe Substance 3D Painter", "python", "startup", ) # TODO - i need to hard code the ALC_PYTHON_PATH as well as the ALC_CODE_ROOT, or we need them as env vars. # so far this is one of the only places where we need to hard code the path to the code root. if os.path.exists(substance_startup_path): copy_destination = os.path.join(substance_startup_path, "userSetup.py") print("Copying {} to {}".format(copy_source, copy_destination)) cgl_copy(source=copy_source, destination=copy_destination, verbose=True) else: print("Path Does Not Exist: {}".format(substance_startup_path))
if __name__ == "__main__": copy_user_setup() # C:\Users\tmiko\OneDrive\Documents\Adobe\Adobe Substance 3D Painter\python\startup # C:\Users\tmiko\OneDrive\Adobe\Adobe Substance 3D Painter\python\startup