Created on | Updated on

Python でシェルフの環境設定を編集する

原文 https://docs.substance3d.com/spdoc/editing-the-shelf-preferences-with-python-172824763.html

以下は、シェルフのパスを操作するためにWindowsレジストリを変更するPythonスクリプトの例です。

シェルフパスの追加

WindowsレジストリにSubstance Paintのシェルフパスを追加するには、既に存在するシェルフパスを確認して、新しいシェルフパスを追加する必要があります。以下のコードは、既に定義されているパスの現在の数を確認した上で、Windowsレジストリに新しいシェルフパスを追加します。

import winreg

RegistryKeyName = "Software\\Allegorithmic\\Substance Painter\\Shelf\\pathInfos"

ShelfName = "myshelf" #Needs to be lowercase
ShelfPath = "C:/Temp"
ShelfStatus = "false" #false = not disabled

try:
	RegConnection = winreg.ConnectRegistry( None, winreg.HKEY_CURRENT_USER )

	#Open registry key
	Key 			= winreg.OpenKey( RegConnection, RegistryKeyName, winreg.KEY_READ )
	SubKeyCount 	= winreg.QueryInfoKey( Key )[0]


	#Iterate over each sub-key to find the biggest Shelf number
	ShelfNumber = 0

	for x in range(SubKeyCount) :
		SubKeyName 			= winreg.EnumKey(Key, x)

		if int(SubKeyName) > ShelfNumber :
			ShelfNumber = int(SubKeyName)


	#Create the new Key and add its values
	ShelfNumber += 1
	
	NewKey = winreg.CreateKey( Key, str( ShelfNumber ) )
	
	winreg.SetValueEx( NewKey, "disabled", 0, winreg.REG_SZ, ShelfStatus)
	winreg.SetValueEx( NewKey, "name", 0, winreg.REG_SZ, ShelfName)
	winreg.SetValueEx( NewKey, "path", 0, winreg.REG_SZ, ShelfPath)


	#Finish
	NewKey.Close()
	Key.Close()

except Exception as e :
	print( e )

 シェルフパスを追加した後、"pathInfos "レジストリキー内の "size "値もインクリメントしてください。

シェルフパスの無効化と有効化

Substance Painterで作成されたシェルフのパスは削除することができますが、無効にすることもできます。これは、Substance Painterに同梱されているデフォルトのシェルフを無効にすることしかできません。以下のコードは、Windowsレジストリを解析し、デフォルトのシェルフ(「allegorithmic」という名前)を無効にします。

import winreg

RegistryKeyName = "Software\\Allegorithmic\\Substance Painter\\Shelf\\pathInfos"

try:
	RegConnection = winreg.ConnectRegistry( None, winreg.HKEY_CURRENT_USER )

	#Open registry key
	Key 			= winreg.OpenKey( RegConnection, RegistryKeyName, winreg.KEY_READ )
	SubKeyCount 	= winreg.QueryInfoKey( Key )[0]


	#Iterate over each sub-key
	for x in range(SubKeyCount) :
		SubKeyName 			= winreg.EnumKey(Key, x)
		SubKey 				= winreg.OpenKey( 	RegConnection,
												RegistryKeyName + "\\" + SubKeyName,
												winreg.KEY_READ )
		SubKeyValueCount 	= winreg.QueryInfoKey( SubKey )[1]

		#Read subkey values
		Values = []
		for i in range( SubKeyValueCount ) :
			Values.append( winreg.EnumValue( SubKey, i ) )

		#Note : Values is a table of tuples
		FoundKey = False
		for Value in Values :
			if Value[0] == "name" :
				if Value[1] == "allegorithmic" :
					FoundKey = True

		SubKey.Close()

		#Found the path ? Then we edit the Key
		if FoundKey :
			print( " - Editing Windows Registry" )

			#Re-Open key in edition mode
			SubKey 	= winreg.OpenKey( 	winreg.HKEY_CURRENT_USER,
										RegistryKeyName + "\\" + SubKeyName,
										0,
										winreg.KEY_SET_VALUE )

			#Assign new value
			winreg.SetValueEx(SubKey, "disabled", 0, 1, "true" ) #use "false" to Enable that shelf path

			SubKey.Close()


	#Finish
	Key.Close()

except Exception as e :
	print( e )

問題が解決しない場合は、Born Digital サポートまでお問い合わせ下さい。

サポート問い合わせ