Bonjour,

J'ai le script Python ci-dessous:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
#!/usr/bin/env python
 
from paraview.vtk import *
from paraview import *
 
from paraview.vtk.hybrid import *
from paraview.vtk.io import *
from libvtkRenderingPython import *
from libvtkHybridPython import *
from Tkinter import *
 
# Create a reader to read the unstructured grid data. We use a
# vtkDataSetReader which means the type of the output is unknown until
# the data file is read. So we follow the reader with a
# vtkCastToConcrete and cast the output to vtkUnstructuredGrid
reader = vtkDataSetReader()
reader.SetFileName("test.vtk")
reader.SetScalarsName("thickness9")
reader.SetVectorsName("displacement9")
castToUnstructuredGrid = vtkCastToConcrete()
castToUnstructuredGrid.SetInputConnection(reader.GetOutputPort())
 
# The connectivity filter extracts the first two regions. These are
# know to represent the mold.
connect = vtkConnectivityFilter()
connect.SetExtractionModeToSpecifiedRegions()
connect.AddSpecifiedRegion(0)
connect.AddSpecifiedRegion(1)
moldMapper = vtkDataSetMapper()
moldMapper.SetInputConnection(reader.GetOutputPort())
moldMapper.ScalarVisibilityOff()
moldActor = vtkActor()
moldActor.SetMapper(moldMapper)
moldActor.GetProperty().SetColor(.2, .2, .2)
moldActor.GetProperty().SetRepresentationToWireframe()
 
# Another connectivity filter is used to extract the parison.
connect2 = vtkConnectivityFilter()
connect2.SetExtractionModeToSpecifiedRegions()
connect2.AddSpecifiedRegion(2)    
# We use vtkExtractUnstructuredGrid because we are interested in
# looking at just a few cells. We use cell clipping via cell id to
# extract the portion of the grid we are interested in.
extractGrid = vtkExtractUnstructuredGrid()
extractGrid.SetInputConnection(connect2.GetOutputPort())
extractGrid.CellClippingOn()
extractGrid.SetCellMinimum(0)
extractGrid.SetCellMaximum(23)
parison = vtkGeometryFilter()
parison.SetInputConnection(extractGrid.GetOutputPort())
normals2 = vtkPolyDataNormals()
normals2.SetInputConnection(parison.GetOutputPort())
normals2.SetFeatureAngle(60)
lut = vtkLookupTable()
lut.SetHueRange(0.0, 0.66667)
parisonMapper = vtkPolyDataMapper()
parisonMapper.SetInputConnection(normals2.GetOutputPort())
parisonMapper.SetLookupTable(lut)
parisonMapper.SetScalarRange(0.12, 1.0)
parisonActor = vtkActor()
parisonActor.SetMapper(parisonMapper)
 
# graphics stuff
ren = vtkRenderer()
renWin = vtkRenderWindow()
renWin.AddRenderer(ren)
iren = vtkRenderWindowInteractor()
iren.SetRenderWindow(renWin)
 
# Add the actors to the renderer, set the background and size
ren.AddActor(parisonActor)
ren.AddActor(moldActor)
ren.SetBackground(1, 1, 1)
ren.ResetCamera()
renWin.SetSize(500, 375)
 
iren.Initialize()
renWin.Render()
iren.Start()
Mis à part quelques erreurs, normalement il m'affiche une fenêtre où il y a les objet que j'ai définis dans un fichiers "test.vtk".
J'aimerais manipuler cette fenêtre depuis un canvas dans une fenêtre créée avec Tcl/Tk.
Je pense qu'il faudrait définir un Tk() ou un Canvas() et utiliser un truc du genre:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
root = Tk()
root.tk.eval('''
       toplevel .fen
       set can [canvas .fen.canv]
       $can create window -window + renWin
       grid $can -row 0 -column 0
'''
)
root.mainloop()
Je vous serai très reconnaissant si quelqu'un pouvait m'aider avec ceci.

Merci,