Preferencias del usuario: Automatizar la configuración
Permanente o basada en sesión
Hay dos formas diferentes de configurar Designer para que use otro archivo de configuración distinto del predeterminado, con ventajas e inconvenientes:
- Modificando el usuario de forma permanente_preferences.xml\ Este archivo se encuentra en ~User\AppData\Local\Adobe\Adobe Substance 3D Designer para Windows. Si lo modifica, Designer siempre utilizará lo que se haya definido allí, independientemente de cómo, cuándo o dónde lo inicie. Para realizar cambios es necesario volver a modificar el código XML, que se describen a continuación, y suelen ser bastante complicados.
- Estableciendo temporalmente la sesión mediante un argumento de línea de comandos\ Designer puede tomar un argumento de línea de comandos al inicio para invalidar el archivo SBSCFG de esa sesión (vea a continuación cómo). Es una solución sencilla y elegante que permite cambiar proyectos mucho más rápido que modificando un XML. El peligro es que si abre a través de varios accesos directos (por ejemplo, Menú Inicio y Escritorio en Windows), puede tener resultados diferentes sin que sea del todo obvio. Además, no está tan protegido contra manipulaciones, ya que los usuarios pueden eliminar, mover o modificar sus métodos abreviados de teclado mucho más fácilmente que su usuario_preferences.xml.
Modificación de XML
Modificación manual de preferencias
Si no hay ninguna configuración automatizada, o con fines de prueba, se puede ir manualmente a Editar > Preferencias… y, a continuación, haga clic en la sección “Proyectos” de la izquierda.
El botón marcado en rojo permite al usuario elegir otro archivo SBSCFG.
Modificar mediante script
Al igual que los archivos de proyecto y configuración, las preferencias del usuario son un XML estructurado, con la configuración pertinente claramente identificable. En lugar de modificar a través de un editor de texto como el Bloc de notas++ o Sublime Text, es muy adecuado para modificar a través de una configuración de scripts externos.
La ventaja de los scripts es que el usuario no tiene que hacer nada más que hacer clic en un botón, y si se crea un sistema lo suficientemente complicado es posible administrar e intercambiar proyectos fácilmente sin necesidad de administrar archivos y configuraciones manualmente.
La línea relevante tiene este aspecto:
<configuration>
<configurationfile>file:///C:/Users/John/AppData/Local/Adobe/Adobe Substance 3D Designer/default_configuration.sbscfg</configurationfile>
</configuration>
Ejemplo de Python
A continuación se muestra una simple función de ejemplo de Python 2.7 para Windows que modifica el archivo user_preferences.xml para otro archivo de configuración. Esto altera permanentemente el valor hasta que se vuelva a cambiar. A continuación, se puede llamar a la función SetConfigurationFile con la ruta de acceso del archivo sbscfg personalizado como parámetro.
Un script Python permite un código potente y limpio, y se puede integrar fácilmente en otro lugar, pero el inconveniente es que para que un usuario lo ejecute, debe compilarse en un ejecutable o el usuario necesita una implementación de 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
Método abreviado de argumento de línea de comandos
De una manera mucho más sencilla, se le puede indicar a Designer que use un SBSCFG específico al inicio a través del argumento “—config-file” (opcional).
Configuración manual
Aunque no se recomienda utilizar un método manual en un entorno de producción, para realizar pruebas, esto se puede hacer con bastante rapidez si ya ha configurado el archivo SBSCFG.
-
Añadir un espacio
-
Agregue —config-file después de la ruta al diseñador en la sección Target.
-
Añadir otro espacio
-
Agregue su ruta de acceso entre comillas para evitar problemas con los espacios de la ruta
-
El resultado debería ser el siguiente:
“C:\Program Files\Adobe\Adobe Substance 3D Designer\Adobe Substance 3D Designer.exe” —config-file “C:\Dev\Substance\custom_configuration.sbscfg”