Go to: Synopsis. Return value. Keywords. Related. Flags. Python examples.

Synopsis

dgInfo([allNodes=boolean], [connections=boolean], [dirty=boolean], [island=boolean], [nodes=boolean], [nonDeletable=boolean], [outputFile=string], [propagation=boolean], [short=boolean], [size=boolean], [subgraph=boolean], [type=string])

Note: Strings representing object names and arguments must be separated by commas. This is not depicted in the synopsis.

dgInfo is NOT undoable, NOT queryable, and NOT editable.

This command prints information about the DG in a text-oriented manner. The scope of the information printed is the entire graph if the -all flag is used, the nodes/plugs on the command line if they were specified, and the selection list, in that order. Each plug on a connection will have two pieces of state information displayed together at the end of the line on which they are printed.
  1. CLEAN PROP is the normal state for a graph that has been successfully evaluated. It indicates that the plug value in the node's datablock is correct and that any successive changes to it (or values upstream from it) are propagated to all plugs depending on it (e.g. downstream connections or "affected" outputs).
  2. DIRTY BLOCK is the normal state for a plug whose upstream values have changed but no evaluation request has come through for that plug's value. The DIRTY part indicates that the current value of the plug held in the datablock may or may not be correct, depending on how the upstream values affect it. Requesting it directly via a getAttr command or indirectly via a request for values downstream of it will trigger a DG evaluation of all upstream plugs. The BLOCK part is an optimization that prevents excessive dirty flag propagation when many values are changing e.g. a frame change in an animated sequece. It means that any changes to values upstream from this plug will not send any further dirty messages to downstream/affected plugs.
  3. DIRTY PROP is a less common but still valid state for a plug whose upstream values have changed but no evaluation request has come through for that plug's value. Like the DIRTY BLOCK state it will trigger an evaluaton when it's value is requested. Where it differs is that when another change comes through from an upstream plug this plug will (again) propagate the dirty message to all downstream/affected plugs. You will only see this state when the DG was not certain that all downstream plugs were notified of their dirty status the last time this plug was marked dirty itself (e.g. if the dirty propagation was intercepted by a node or the graph connections changed since the last dirty message).
  4. CLEAN BLOCK should never be seen in a valid DG. This indicates that while the value of the plug is clean (i.e. valid) it will not propagate a dirty state when its value changes. That means downstream nodes will not be notified that the graph is changing and they will not evaluate properly. Recovering from this invalid state requires entering the command dgdirty -a to mark everything dirty and restart proper evaluation. (Think of this command as the CTL-ALT-DEL of the DG world.)

Return value

None

Keywords

debug, dependency, graph, node, output, connection

Related

dgdirty, dgeval

Flags

allNodes, connections, dirty, island, nodes, nonDeletable, outputFile, propagation, short, size, subgraph, type
Long name (short name) Argument types Properties
connections(c) boolean create
Print the connection information
nodes(n) boolean create
Print the specified nodes (or the entire graph if -all is used)
island(island) boolean create
Print detailed debug information about the island for each node. Note that this flag will typically generate a large amount of debug information, so it is recommended that the list of nodes passed to the command be brief when using the islandDetail flag. The information includes the full list of nodes in the island, as well as all islands connected to the island.
subgraph(sub) boolean create
Print the subgraph affected by the node or plugs (or all nodes in the graph grouped in subgraphs if -all is used)
allNodes(all) boolean create
Use the entire graph as the context
short(s) boolean create
Print using short format instead of long
dirty(d) boolean create
Only print dirty/clean nodes/plugs/connections. Default is both
propagation(p) boolean create
Only print propagating/not propagating nodes/plugs/connections. Default is both.
nonDeletable(nd) boolean create
Include non-deletable nodes as well (normally not of interest)
size(sz) boolean create
Show datablock sizes for all specified nodes. Return value is tuple of all selected nodes (NumberOfNodes, NumberOfDatablocks, TotalDatablockMemory)
type(nt) string create
Filter output to only show nodes of type NODETYPE
outputFile(of) string create
Send the output to the file FILE instead of STDERR

Flag can appear in Create mode of command Flag can appear in Edit mode of command
Flag can appear in Query mode of command Flag can have multiple arguments, passed either as a tuple or a list.

Python examples

import maya.cmds as cmds

# create a node
cmds.createNode('transform',name='NODE')
cmds.setKeyframe('NODE.translate')
# Print all things connected to node NODE
cmds.dgInfo( 'NODE', c=True )
# Print all connections currently in the graph
cmds.dgInfo( c=True, all=True )
# Print the datablock size of all nodes currently in the graph
cmds.dgInfo( sz=True, all=True )
# Return: [12, 12, 12314]
# Print all connections to attribute tx on node NODE
cmds.dgInfo('NODE.tx',c=True)
# Print all dirty connections in the entire graph
cmds.dgInfo( c=True, all=True, d=True )