Preferências do usuário - Automatizando a configuração
Permanente ou baseado em sessão
Há duas maneiras diferentes de configurar o Designer para usar outro arquivo de configuração diferente do padrão, ambos com vantagens e desvantagens:
- Modificando permanentemente user_preferences.xml\ Este arquivo está localizado no ~User\AppData\Local\Adobe\Adobe Substance 3D Designer para Windows. Se você modificá-lo, o Designer sempre usará o que está definido nele, independentemente de como, quando ou onde você o iniciou. Para fazer alterações, é necessário modificar novamente o XML, ambos descritos abaixo, e que costumam estar um pouco envolvidos.
- Definindo temporariamente a sessão por meio de um argumento de linha de comando\ O Designer pode usar um argumento de linha de comando na inicialização para substituir o arquivo SBSCFG para essa sessão (veja abaixo como). É uma solução simples e elegante, que permite alternar projetos de maneira muito mais rápida do que modificando um XML. O perigo é que, se você abrir por vários atalhos (por exemplo, Menu Iniciar e Desktop no Windows), poderá ter resultados diferentes sem que isso seja totalmente óbvio. Além disso, não é tão à prova de violação, pois os usuários podem excluir, mover ou modificar seus atalhos com muito mais facilidade do que seu user_preferences.xml.
Modificação de XML
Modificação manual de preferências
Se não houver uma configuração automatizada ou para fins de teste, é possível acessar manualmente Editar > Preferências… e clicar na seção “Projetos” à esquerda.
O botão marcado em vermelho permite que o usuário escolha um arquivo SBSCFG diferente.
Modificando por meio de script
Assim como os arquivos de Projeto e Configuração, as preferências do usuário são um XML estruturado, com a configuração relevante claramente identificável. Em vez de modificá-lo por meio de um editor de texto como o Notepad++ ou o Sublime Text, ele é bastante adequado para modificações por meio de uma configuração externa com script.
A vantagem do script é que o usuário não precisa fazer mais nada além de clicar em um botão e, se um sistema suficientemente complicado for criado, será possível gerenciar e trocar o projeto facilmente, sem a necessidade de gerenciar arquivos e configurações manualmente.
A linha relevante se parece com isto:
<configuration>
<configurationfile>file:///C:/Users/John/AppData/Local/Adobe/Adobe Substance 3D Designer/default_configuration.sbscfg</configurationfile>
</configuration>
Exemplo em Python
Veja a seguir um exemplo de função Python 2.7 simples para Windows que modifica o usuário_preferences.xml para outro arquivo de configuração. Isso altera permanentemente o valor até que seja retrocedido. A função SetConfigurationFile pode ser chamada com o caminho do arquivo sbscfg personalizado como um parâmetro.
Um script python permite um código poderoso e limpo, e pode ser facilmente integrado em outros lugares, mas a desvantagem é que para um usuário executá-lo, ele precisa ser compilado para um executável, ou o usuário precisa de uma implantação Python.
import xml.etree.ElementTree as ElementTree
import os
##Example Python script for changing Substance 3D Designer user preference file##
def SetConfigurationFile(p_ConfigPath):
## Check is the path passed as parameter exists.
if(os.path.isfile(p_ConfigPath)):
## replace backslashes by forwardslahes to ensure consistency
p_ConfigPath = p_ConfigPath.replace("\", "/")
## get Local Appadata path from Environment variables, construct full path to user_preferences.xml and check if it exists.
m_AppDataPath = os.environ.get('LOCALAPPDATA')
if m_AppDataPath != None:
m_UserPrefsPath = os.path.join(m_AppDataPath, str("Adobe/Adobe Substance 3D Designer/user_preferences.xml"))
if(os.path.isfile(m_UserPrefsPath)):
## read XML elementtree from file, find correct element until we get to the actual line that defines the configurationfile path
m_PrefsTree = ElementTree.parse(m_UserPrefsPath)
m_PrefsRoot = m_PrefsTree.getroot()
m_PrefsElement = m_PrefsRoot.find("preferences")
m_XMLError = True
if(m_PrefsElement != None):
m_ConfigElement = m_PrefsElement.find("configuration")
if(m_ConfigElement != None):
m_ConfigFileElement = m_ConfigElement.find("configurationfile")
if(m_ConfigFileElement != None):
m_XMLError = False
## Check if path is already set, to avoid double work
if m_ConfigFileElement.text.replace("file:///","") == p_ConfigPath:
print "configurationfile is already set to desired path. Aborting."
return True
else:
## construct correctly formatted path, insert into elementtree
m_ConfigPath = str("file:///" + p_ConfigPath)
m_ConfigFileElement.text = m_ConfigPath
## Write to file
m_XMLString = str("<?xml version="1.0" encoding="UTF-8"?>n") + ElementTree.tostring(m_PrefsRoot, 'utf-8')
m_File = open(m_UserPrefsPath,'w')
m_File.write(m_XMLString)
m_File.close()
print "configuration file path succesfully changed!"
return True
if m_XMLError:
## if this flag was not set to false, we can assume something was missing or went wrong when walking through the XML
print("Error: malformed content in user_preferences.xml!")
return False
else:
print "Error: user_preferences.xml does not exist, try starting Substance 3D Designer first!"
return False
else:
print "Error: LocalAppData path returned None"
return False
else:
print "Error: Invalid Configuration File path!"
return False
Atalho de argumento da linha de comando
De uma forma muito mais simples, o Designer pode ser instruído a usar um SBSCFG específico na inicialização através do argumento “—config-file” (opcional).
Configuração manual
Embora não seja recomendado usar um método manual em um ambiente de produção, para fins de teste, isso pode ser feito com bastante rapidez se você já tiver configurado o arquivo SBSCFG.
-
Adicionar um espaço
-
Adicione —config-file após o caminho para o designer na seção Destino.
-
Adicionar outro espaço
-
Adicione seu caminho, delimitado por aspas para evitar problemas com espaços no caminho
-
O resultado deve ser assim:
”C:\Program Files\Adobe\Adobe Substance 3D Designer\Adobe Substance 3D Designer.exe” —config-file “C:\Dev\Substance\custom_configuration.sbscfg”