Difference between revisions of "ParaView/Python/SavePipelineAsGraph"

From KitwarePublic
Jump to: navigation, search
(Created page with "= Summary = The simple API provides functions to manipulate the sources, using graphviz we can save and even show the current Pipeline as a graph, in order to obtain images li...")
 
(Summary)
Line 2: Line 2:
 
The simple API provides functions to manipulate the sources, using graphviz we can save and even show the current Pipeline as a graph, in order to obtain images like this
 
The simple API provides functions to manipulate the sources, using graphviz we can save and even show the current Pipeline as a graph, in order to obtain images like this
  
[[File:https://gitlab.kitware.com/paraview/paraview/uploads/9f22d50401eb0eca25aea454aca7cf82/2018-10-12-165330_1307x692_scrot.png]]
+
<ImageLink>https://gitlab.kitware.com/paraview/paraview/uploads/9f22d50401eb0eca25aea454aca7cf82/2018-10-12-165330_1307x692_scrot.png</ImageLink>
  
 
==Script==
 
==Script==

Revision as of 10:08, 16 October 2018

Summary

The simple API provides functions to manipulate the sources, using graphviz we can save and even show the current Pipeline as a graph, in order to obtain images like this

Image

Script

def SavePipelineGraph(path, format="png", view=False):
    """Save the state of the pipelines (aka Sources and Filters) as a graph.
    Specify the path to save the graph to, Optionaly, specify the format to save it to
    , default "png" and if you want to show it right away, default False.
    This method is using graphviz and will save two file. One to the graphviz format
    and another one to the provided format.
    """
    try:
      import graphviz
    except ImportError:
      print("Graphviz could not be imported", file=sys.stderr)
      return

    d = graphviz.Digraph()
    activeSource = GetActiveSource()
    sources = GetSources()
    if len(sources) == 0:
      print("Pipeline is empty")
    else:
      for item in sources.items():
        key = item[0]
        source = item[1]
        color = "red" if source == activeSource else "black"
        d.node(key[1], label=key[0], color=color)
        proxy = source.SMProxy
        for i in range(proxy.GetNumberOfProducers()):
          prod = proxy.GetProducerProxy(i)
          if prod.IsTypeOf("vtkSMSourceProxy"):
            d.edge(str(proxy.GetProducerProxy(i).GetGlobalID()), str(key[1]))
      d.format = format
      d.render(path, view=view)