user_preferences.xmlファイルには、プロジェクト構成で定義されているもの以外のすべてのユーザー固有の設定が含まれています。 これらは主に特定のUIとパフォーマンス設定に関連しています。
変更する必要がある唯一の設定は、プロジェクトのリストを含む構成ファイルです。 下記のように、いくつかの方法で行うことができます。
あるいは、ユーザー設定の変更を完全に回避して、Designerショートカットのコマンドライン引数を使用してSBSCFGファイルをセッションベースで上書きすることもできます。以下を参照してください。
恒久的またはセッションベース
デフォルト以外の別の構成ファイルを使用するようにDesignerを設定する方法は2つあります。両方とも利点と欠点があります。
- user_preferences.xmlを恒久的に変更する
- コマンドライン引数でセッションを一時的に設定する
Designerは起動時にコマンドライン引数を使用して、そのセッションのSBSCFGファイルを上書きすることができます(詳細は下記を参照)。 これはシンプルで洗練されたソリューションであり、XMLを変更するよりもはるかに迅速にプロジェクトを切り替えることができます。
その危険性は、 複数のショートカットから開く場合(Windowsのスタートメニューとデスクトップなど)、完全に明記していなくても、異なる結果が出ることがあります。それに加えて、ユーザーは自分のuser_preferences.xmlよりもはるかに簡単に自分のショートカットを削除、移動、または変更できるため、改ざん防止機能はありません。
XMLの修正
設定を手動で変更する
自動設定がない場合、またはテスト目的で、手動でEdit > Preferences...を選択してから、左側の[Projects]セクションをクリックします。
赤でマークされたボタンは、ユーザーが異なるSBSCFGファイルを選ぶことを可能にします。
スクリプトによる修正
プロジェクトファイルと構成ファイルと同様に、ユーザー設定は構造化されたXMLであり、関連設定は明確に識別できます。 Notepad ++やSublime Textなどのテキストエディタを使って変更するのではなく、外部のスクリプト形式の設定を使って変更するのに非常に適しています。
スクリプティングの利点は、ユーザーがボタンをクリックする以外に何もする必要がないことです。また、十分に複雑なシステムが作成されれば、ファイルや設定を手動で管理する必要なくプロジェクトを簡単に管理および交換できます。
関連行は次のようになります。
<configuration> <configurationfile>file:///C:/Users/John/AppData/Local/Allegorithmic/Substance Designer/default_configuration.sbscfg</configurationfile> </configuration>
Python Example
以下は、Windows用の単純なPython 2.7の関数例で、user_preferences.xmlを別の設定ファイルに変更します。 これは変更されるまで値を永久に変更します。 その後、カスタムのsbscfgファイルのパスをパラメータとして、SetConfigurationFile関数を呼び出すことができます。
Pythonスクリプトは強力でクリーンなコードを可能にし、他の場所に簡単に統合することができますが、ユーザーが実行するには、実行可能ファイルにコンパイルする必要があるか、ユーザーがPythonデプロイメントを必要とします。
import xml.etree.ElementTree as ElementTree import os ##Example Python script for changing Substance 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("Allegorithmic/Substance 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 Designer first!" return False else: print "Error: LocalAppData path returned None" return False else: print "Error: Invalid Configuration File path!" return False
コマンドライン引数のショートカット
もっと簡単な方法として、 " - config-file"(オプション)引数を通して、Designerは起動時に特定のSBSCFGを使用するように指示されます。
手動セットアップ
実稼働環境で手動の方法を使用することはお勧めできませんが、テスト目的でSBSCFGファイルを既に設定している場合はかなり迅速に実行できます。
- スペースを追加してください。
- Targetセクションのdesignerへのパスの後に--config-fileを追加します。
- 別のスペースを追加します。
- パス内のスペースに関する問題を回避するために、引用符で囲んでパスを追加してください。
結果は次のようになります。
"C:\Program Files\Allegorithmic\Substance Designer\Substance Designer.exe" --config-file "C:\Dev\Substance\custom_configuration.sbscfg"