Editing the Shelf Preferences with Python
Below are example Python scripts to modify Windows registry in order to manipulate resource paths.
Registry key path
See the table below to use the appropriate registry key path:
Adding a new path
Adding a resource path requires to check which one exist already in order to increment the list with a new one.
The following code adds in the registry key a new shelf path after checking what is the current number of path already defined.
NOTE
The sub-key Shelf (alongside pathInfos) may not be present in the registry. To make it appear start the application, open the preferences (Edit > Settings) then click OK and close the application.
import winreg
RegistryKeyName = "SOFTWARE\Adobe\Adobe Substance 3D Painter\Shelf\pathInfos"
ShelfName = "myshelf" #Needs to be lowercase
ShelfPath = "C:/Temp"
ShelfStatus = "false" #false = not disabled
RegConnection = winreg.ConnectRegistry( None, winreg.HKEY_CURRENT_USER )
## Open parent registry key
Key = winreg.OpenKey( RegConnection, RegistryKeyName, winreg.KEY_READ )
## Iterate over each sub-key to retrieve the biggest Shelf number
SubKeyCount = winreg.QueryInfoKey( Key )[0]
ShelfNumber = 0
for x in range(SubKeyCount) :
SubKeyName = winreg.EnumKey(Key, x)
ShelfNumber = max( ShelfNumber, int(SubKeyName) )
ShelfNumber += 1
## Create the new Key and add its values
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)
NewKey.Close()
## Increment the Shelf path counter
Count = winreg.QueryValueEx( Key, "size" )
Key.Close()
Key = winreg.OpenKeyEx( RegConnection, RegistryKeyName, 0, winreg.KEY_SET_VALUE )
winreg.SetValueEx( Key, "size", 0, winreg.REG_DWORD, Count[0] + 1 )
Key.Close()
Disabling or enabling a resource path
Any path created can be removed when not needed anymore, but also disabled for the default path which cannot be removed altogether.
The following code parse the Windows Registry and disable the default shelf (named “starter_assets”).
import winreg
RegistryKeyName = "SOFTWARE\Adobe\Adobe Substance 3D Painter\Shelf\pathInfos"
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] == "starter_assets" :
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()
recommendation-more-help
4517c71e-0531-47f5-b14d-d3b9de4d0104