mirror of
https://github.com/OpenFOAM/ThirdParty-6.git
synced 2025-12-08 06:57:43 +00:00
55 lines
1.6 KiB
Python
55 lines
1.6 KiB
Python
#!/usr/bin/env python
|
|
from vtk import *
|
|
|
|
source = vtkRandomGraphSource()
|
|
source.SetNumberOfVertices(75)
|
|
source.SetEdgeProbability(0.02)
|
|
source.SetUseEdgeProbability(True)
|
|
source.SetStartWithTree(True)
|
|
|
|
create_index = vtkProgrammableFilter()
|
|
create_index.AddInputConnection(source.GetOutputPort())
|
|
|
|
def create_index_callback():
|
|
input = create_index.GetInput()
|
|
output = create_index.GetOutput()
|
|
|
|
output.ShallowCopy(input)
|
|
|
|
vertex_id_array = vtkIdTypeArray()
|
|
vertex_id_array.SetName("vertex_id")
|
|
vertex_id_array.SetNumberOfTuples(output.GetNumberOfVertices())
|
|
for i in range(output.GetNumberOfVertices()):
|
|
vertex_id_array.SetValue(i, i)
|
|
output.GetVertexData().AddArray(vertex_id_array)
|
|
|
|
edge_target_array = vtkIdTypeArray()
|
|
edge_target_array.SetName("edge_target")
|
|
edge_target_array.SetNumberOfTuples(output.GetNumberOfEdges())
|
|
edge_iterator = vtkEdgeListIterator()
|
|
output.GetEdges(edge_iterator)
|
|
while edge_iterator.HasNext():
|
|
edge = edge_iterator.NextGraphEdge()
|
|
edge_target_array.SetValue(edge.GetId(), edge.GetTarget())
|
|
output.GetEdgeData().AddArray(edge_target_array)
|
|
|
|
create_index.SetExecuteMethod(create_index_callback)
|
|
|
|
view = vtkGraphLayoutView()
|
|
view.AddRepresentationFromInputConnection(create_index.GetOutputPort())
|
|
view.SetVertexLabelArrayName("vertex_id")
|
|
view.SetVertexLabelVisibility(True)
|
|
view.SetEdgeLabelArrayName("edge_target")
|
|
view.SetEdgeLabelVisibility(True)
|
|
|
|
theme = vtkViewTheme.CreateMellowTheme()
|
|
view.ApplyViewTheme(theme)
|
|
theme.FastDelete()
|
|
|
|
view.GetRenderWindow().SetSize(600, 600)
|
|
view.ResetCamera()
|
|
view.Render()
|
|
|
|
view.GetInteractor().Start()
|
|
|