You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
118 lines
3.7 KiB
118 lines
3.7 KiB
package require vtk
|
|
package require vtkinteraction
|
|
|
|
# Read a field representing unstructured grid and display it (similar to blow.tcl)
|
|
|
|
# create a reader and write out field daya
|
|
vtkUnstructuredGridReader reader
|
|
reader SetFileName "$VTK_DATA_ROOT/Data/blow.vtk"
|
|
reader SetScalarsName "thickness9"
|
|
reader SetVectorsName "displacement9"
|
|
vtkDataSetToDataObjectFilter ds2do
|
|
ds2do SetInputConnection [reader GetOutputPort]
|
|
|
|
# we must be able to write here
|
|
if {[catch {set channel [open "UGridField.vtk" "w"]}] == 0 } {
|
|
close $channel
|
|
|
|
vtkDataObjectWriter write
|
|
write SetInputConnection [ds2do GetOutputPort]
|
|
write SetFileName "UGridField.vtk"
|
|
write Write
|
|
|
|
# Read the field and convert to unstructured grid.
|
|
vtkDataObjectReader dor
|
|
dor SetFileName "UGridField.vtk"
|
|
vtkDataObjectToDataSetFilter do2ds
|
|
do2ds SetInputConnection [dor GetOutputPort]
|
|
do2ds SetDataSetTypeToUnstructuredGrid
|
|
do2ds SetPointComponent 0 "Points" 0
|
|
do2ds SetPointComponent 1 "Points" 1
|
|
do2ds SetPointComponent 2 "Points" 2
|
|
do2ds SetCellTypeComponent "CellTypes" 0
|
|
do2ds SetCellConnectivityComponent "Cells" 0
|
|
vtkFieldDataToAttributeDataFilter fd2ad
|
|
fd2ad SetInput [do2ds GetUnstructuredGridOutput]
|
|
fd2ad SetInputFieldToDataObjectField
|
|
fd2ad SetOutputAttributeDataToPointData
|
|
fd2ad SetVectorComponent 0 "displacement9" 0
|
|
fd2ad SetVectorComponent 1 "displacement9" 1
|
|
fd2ad SetVectorComponent 2 "displacement9" 2
|
|
fd2ad SetScalarComponent 0 "thickness9" 0
|
|
|
|
# Now start visualizing
|
|
vtkWarpVector warp
|
|
warp SetInput [fd2ad GetUnstructuredGridOutput]
|
|
|
|
# extract mold from mesh using connectivity
|
|
vtkConnectivityFilter connect
|
|
connect SetInputConnection [warp GetOutputPort]
|
|
connect SetExtractionModeToSpecifiedRegions
|
|
connect AddSpecifiedRegion 0
|
|
connect AddSpecifiedRegion 1
|
|
vtkDataSetMapper moldMapper
|
|
moldMapper SetInputConnection [connect GetOutputPort]
|
|
moldMapper ScalarVisibilityOff
|
|
vtkActor moldActor
|
|
moldActor SetMapper moldMapper
|
|
[moldActor GetProperty] SetColor .2 .2 .2
|
|
[moldActor GetProperty] SetRepresentationToWireframe
|
|
|
|
# extract parison from mesh using connectivity
|
|
vtkConnectivityFilter connect2
|
|
connect2 SetInputConnection [warp GetOutputPort]
|
|
connect2 SetExtractionModeToSpecifiedRegions
|
|
connect2 AddSpecifiedRegion 2
|
|
vtkGeometryFilter parison
|
|
parison SetInputConnection [connect2 GetOutputPort]
|
|
vtkPolyDataNormals normals2
|
|
normals2 SetInputConnection [parison GetOutputPort]
|
|
normals2 SetFeatureAngle 60
|
|
vtkLookupTable lut
|
|
lut SetHueRange 0.0 0.66667
|
|
vtkPolyDataMapper parisonMapper
|
|
parisonMapper SetInputConnection [normals2 GetOutputPort]
|
|
parisonMapper SetLookupTable lut
|
|
parisonMapper SetScalarRange 0.12 1.0
|
|
vtkActor parisonActor
|
|
parisonActor SetMapper parisonMapper
|
|
|
|
vtkContourFilter cf
|
|
cf SetInputConnection [connect2 GetOutputPort]
|
|
cf SetValue 0 .5
|
|
vtkPolyDataMapper contourMapper
|
|
contourMapper SetInputConnection [cf GetOutputPort]
|
|
vtkActor contours
|
|
contours SetMapper contourMapper
|
|
|
|
# Create graphics stuff
|
|
vtkRenderer ren1
|
|
vtkRenderWindow renWin
|
|
renWin AddRenderer ren1
|
|
vtkRenderWindowInteractor iren
|
|
iren SetRenderWindow renWin
|
|
|
|
# Add the actors to the renderer, set the background and size
|
|
ren1 AddActor moldActor
|
|
ren1 AddActor parisonActor
|
|
ren1 AddActor contours
|
|
ren1 ResetCamera
|
|
[ren1 GetActiveCamera] Azimuth 60
|
|
[ren1 GetActiveCamera] Roll -90
|
|
[ren1 GetActiveCamera] Dolly 2
|
|
ren1 ResetCameraClippingRange
|
|
ren1 SetBackground 1 1 1
|
|
renWin SetSize 375 200
|
|
|
|
iren Initialize
|
|
iren AddObserver UserEvent {wm deiconify .vtkInteract}
|
|
if {[info commands "rtExMath"] != ""} {
|
|
file delete -force "UGridField.vtk"
|
|
}
|
|
}
|
|
|
|
# prevent the tk window from showing up then start the event loop
|
|
wm withdraw .
|
|
|
|
|
|
|
|
|