content module

Module content provides the definition of the classes SBSGroup and SBSContent

class substance.content.SBSContent(aGroups=None, aGraphs=None, aResources=None, aResourcesScene=None, aFunctions=None, aMDLGraphs=None, aModelGraphs=None)

Bases: SBSObject

Class that contains information on the content node as defined in a .sbs file. The content is a tree structure of these elements:

Members:
  • mGraphs (list of SBSGraph): Graphs in this content

  • mGroups (list of SBSGroup): Folders in this content

  • mResources (list of SBSResource): Resources in this content

  • mResourcesScene (list of SBSResourceScene): Scene resources in this content

  • mFunctions (list of SBSFunction): Functions in this content

computeUniqueIdentifier(aIdentifier, aSuffixId=0)

Check if the given identifier is already used and generate a unique identifier if necessary

Returns:

A unique identifier, which is either the given one or a new one with a suffix: identifier_id

equals(other)

Check if this SBSObject is equivalent to the other SBSObject. Some members may be excluded from this check, the UIDs or GUILayout for instance.

Parameters:

other (SBSObject) – The SBSObject to compare to

Returns:

True if the two SBSObject are similar according to their definition.

getMDLGraphList(aRecursive=True)

Get the list of MDL graphs identifiers defined in this content, including sub-folders or not. Warning: MDLGraph is not supported in SAT >= 16.0, only the identifiers are returned

Returns:

A list of strings

getModelGraph(aGraphIdentifier, aRecursive=True)

Get the Model Graph object with the given identifier

Parameters:
  • aGraphIdentifier (str) – the identifier (not uid) of the graph to find

  • aRecursive (bool) – True to parse sub folders, False to search only inside the current Content

Returns:

A ModuleGraph object

getModelGraphList(aRecursive=True)

Get the list of Model graphs defined in this content, including sub-folders or not.

Returns:

A list of ModuleGraph objects

getObject(aIdentifier)

Get the object with the given identifier in the content directly under this content.

Parameters:

aIdentifier (str) – the identifier (not uid) of the object to find

Returns:

A SBSObject if found, None otherwise

getObjectFromUID(aUID, aRecursive=True)

Parse the Groups, Graphs, Resources and Functions to find the object with the given uid

Parameters:
  • aUID (str) – The UID of the object (group, graph, resource or function) to look for

  • aRecursive (boolean, optional) – True to search recursively in all groups, False to search only in the direct content. Default to True

Returns:

The SBSObject if found, None otherwise

getObjectInternalPath(aUID, aObjectClass=None, aPath='')

Get the path of the given object relatively to the current content. Only objects that are directly under a Content node can be found: SBSGroup SBSGraph SBSResource SBSFunction

Parameters:
  • aUID (str) – the UID of the object to search

  • aObjectClass (class, optional) – the class of the object to search. If None, the function will look into all the kind of content

Returns:

A string containing the relative path from the current content to the given object if found, None otherwise

getSBSFunction(aFunctionIdentifier, aRecursive=True)

Get the Function object with the given identifier

Parameters:
  • aFunctionIdentifier (str) – the identifier (not uid) of the function to find

  • aRecursive (bool) – True to parse sub folders, False to search only inside the current Content

Returns:

A SBSFunction object

getSBSFunctionList(aRecursive=True)

Get the list of functions defined in this content, including sub-folders or not.

Parameters:

aRecursive (bool) – True to parse sub folders, False to search only inside the current Content

Returns:

A list of SBSFunction objects

getSBSGraph(aGraphIdentifier, aRecursive=True)

Get the Graph object with the given identifier

Parameters:
  • aGraphIdentifier (str) – the identifier (not uid) of the graph to find

  • aRecursive (bool) – True to parse sub folders, False to search only inside the current Content

Returns:

A SBSGraph object

getSBSGraphList(aRecursive=True)

Get the list of graphs defined in this content, including sub-folders or not.

Returns:

A list of SBSGraph objects

getSBSGroup(aGroupIdentifier, aRecursive=True)

Get the Group object with the given identifier

Parameters:
  • aGroupIdentifier (str) – the identifier (not uid) of the group to find

  • aRecursive (bool) – True to parse sub folders, False to search only inside the current Content

Returns:

A SBSGroup object

getSBSGroupInternalPath(aGroupIdentifier, aPath='')

Get the path of the given group relatively to the current content

Returns:

A string containing the relative path from the current content to the given group, None otherwise

getSBSGroupList(aRecursive=True)

Get the list of groups defined in this content, including sub-folders or not.

Returns:

A list of SBSGroup objects

getSBSResource(self, aResourceIdentifier, aRecursive=True)

Get the Resource object with the given identifier

Parameters:
  • aResourceIdentifier (str) – the identifier (not uid) of the resource to find

  • aRecursive (bool) – True to parse sub folders, False to search only inside the current Content

Returns:

A SBSResource object

getSBSResourceList(aRecursive=True, aIncludeSceneResources=True)

Get the list of the resources defined in this content, including sub-folders or not.

Parameters:
  • aRecursive (bool, optional) – True to parse sub folders, False to search only inside the current Group. Default to True

  • aIncludeSceneResources (bool, optional) – True to include the Scene/Mesh resources. Default to True

Returns:

A list of SBSResource objects

getUidIsUsed(aUID)

Parse the Groups, Graphs, Resources and Functions to find a SBSObject with the given uid

Returns:

True if a compnode has this uid

static isContentChildType(aObject)

Check if the type of given object is one of the types accepted under a SBSContent object

Parameters:

aObject – The object to check

Returns:

True if the type of the given object can be included in a SBSContent

parse(aContext, aDirAbsPath, aSBSParser, aXmlNode)

Parse recursively the given xml node to retrieve the content of the SBSObject.

Parameters:
  • aContext (Context) – execution context

  • aDirAbsPath (str) – the absolute directory containing the current parsed package (.sbs file)

  • aSBSParser (SBSParser) – the substance parser

  • aXmlNode (xml.etree.ElementTree) – the xml node to parse

removeObject(aObject)

Remove the given object from this content

Parameters:

aObject (SBSObject or UID) – The object (group, graph, function, resource) to remove from this content, as a SBSObject or given its UID

Returns:

True if success

write(aSBSWriter, aXmlNode)

Write recursively the content of the SBSObject into the given xml node.

Parameters:
  • aSBSWriter (SBSWriter) – the substance writer

  • aXmlNode (xml.etree.ElementTree) – the xml node to fill

class substance.content.SBSGroup(aIdentifier='', aUID='', aDesc=None, aContent=None)

Bases: SBSObject

Class that contains information on a group node as defined in a .sbs file. A group correspond to a folder in Substance Designer, and is a hierarchical group of elements.

Members:
  • mIdentifier (str): identifier of the group used in the paths that refer to its sub-objects.

  • mUID (str): unique identifier of this group in the package/ context.

  • mDesc (str, optional): textual description.

  • mContent (SBSContent, optional): children of the group.

equals(other)

Check if this SBSObject is equivalent to the other SBSObject. Some members may be excluded from this check, the UIDs or GUILayout for instance.

Parameters:

other (SBSObject) – The SBSObject to compare to

Returns:

True if the two SBSObject are similar according to their definition.

getContent()

Get the content included in this group

Returns:

The content as a SBSContent object

getDescription()

Get the group description

Returns:

The textual description of the group

getMDLGraphList()

Get the list of all MDL graphs identifiers included in this group Warning: MDLGraph is not supported in SAT >= 16.0, only the identifiers are returned

Parameters:

aRecursive (bool, optional) – True to parse sub folders, False to search only inside the current Group. Default to False

Returns:

A list of strings

getModelGraph(aGraphIdentifier)

Get the Model Graph object with the given identifier

Parameters:

aGraphIdentifier (str) – Identifier of the graph to get

Returns:

A ModuleGraph object

getModelGraphList()

Get the list of all Model graphs included in this group

Parameters:

aRecursive (bool, optional) – True to parse sub folders, False to search only inside the current Group. Default to False

Returns:

A list of ModuleGraph object

getSBSFunction(aFunctionIdentifier)

Get the Function object with the given identifier

Parameters:

aFunctionIdentifier (str) – Identifier of the function to get

Returns:

A SBSFunction object

getSBSFunctionList()

Get the list of all functions included in this group

Parameters:

aRecursive (bool, optional) – True to parse sub folders, False to search only inside the current Group. Default to False

Returns:

A list of SBSFunction object

getSBSGraph(aGraphIdentifier)

Get the Substance graph object with the given identifier

Parameters:

aGraphIdentifier (str) – Identifier of the graph to get

Returns:

A SBSGraph object

getSBSGraphList()

Get the list of all Substance graphs included in this group

Parameters:

aRecursive (bool, optional) – True to parse sub folders, False to search only inside the current Group. Default to False

Returns:

A list of SBSGraph object

getSBSGroup(aGroupIdentifier)

Get the Group object with the given identifier

Parameters:

aGroupIdentifier (str) – Identifier of the group (=folder) to get

Returns:

A SBSGroup object

getSBSGroupList()

Get the list of all groups included in this group

Parameters:

aRecursive (bool, optional) – True to parse sub folders, False to search only inside the current Group. Default to False

Returns:

A list of SBSGroup object

getSBSResource(self, aResourceIdentifier)

Get the Resource object with the given identifier

Parameters:

aResourceIdentifier (str) – Identifier of the resource to get

Returns:

A SBSResource object

getSBSResourceList(aRecursive=False, aIncludeSceneResources=True)

Get the list of all the resources included in this group.

Parameters:
  • aRecursive (bool, optional) – True to parse sub folders, False to search only inside the current Group. Default to False

  • aIncludeSceneResources (bool, optional) – True to include the Scene/Mesh resources. Default to True

Returns:

A list of SBSResource objects

getUidIsUsed(aUID)

Check if the given uid is already used in the context of this SBSObject.

Parameters:

aUID (str) – UID to check

Returns:

True if the uid is already used, False otherwise

Raise:

AttributeError if the function getUidIsUsed in not properly overloaded on this SBSObject

parse(aContext, aDirAbsPath, aSBSParser, aXmlNode)

Parse recursively the given xml node to retrieve the content of the SBSObject.

Parameters:
  • aContext (Context) – execution context

  • aDirAbsPath (str) – the absolute directory containing the current parsed package (.sbs file)

  • aSBSParser (SBSParser) – the substance parser

  • aXmlNode (xml.etree.ElementTree) – the xml node to parse

setDescription(aDescription)

Set the given description

Parameters:

aDescription (str) – the textual group description

write(aSBSWriter, aXmlNode)

Write recursively the content of the SBSObject into the given xml node.

Parameters:
  • aSBSWriter (SBSWriter) – the substance writer

  • aXmlNode (xml.etree.ElementTree) – the xml node to fill