Я пишу Paraview (5.6.0) на Python, создавая сферические глифы из файла VTU. Соответствующая часть сценария показана ниже. После завершения сценария глифы создаются и отображаются с правильными параметрами, но пользовательский интерфейс не отражает все настройки.
В частности, скрипт говорит: sphGlyph.ScaleArray=['POINTS','diameter']
, и в представлении правильно отображаются сферы, масштабированные массивом diameter
; тем не менее, пользовательский интерфейс все еще говорит No scale array
(на изображении ниже). Если я нажимаю «Применить», я теряю настройку diameter
, и представление обновляется до No scale array
.
Некоторые другие настройки, такие как sphGlyph.ScaleFactor=1.
, соблюдаются как в пользовательском интерфейсе, так и в представлении.
Я не вижу очевидной разницы между скриптом и трассировкой Python при построении конвейера вручную.
Где проблема?
# ....
vtuFile="/tmp/burnt.vtu"
view=GetActiveViewOrCreate('RenderView')
# ...
sph=XMLUnstructuredGridReader(FileName=[vtuFile])
RenameSource(vtuFile,sph)
sphGlyph=Glyph(Input=sph,GlyphType='Sphere',GlyphMode='All Points')
sphGlyph.ScaleFactor=1.
sphGlyph.ScaleArray=['POINTS','diameter'] ### <---- SET HERE
sphGlyph.GlyphType.ThetaResolution=32
sphGlyph.GlyphType.PhiResolution=32
sphGlyphShow=Show(sphGlyph,view)
sphGlyphShow.Opacity=0.5
sphGlyphShow.BackfaceRepresentation='Surface'
view.Update()
РЕДАКТИРОВАТЬ: Это сценарий, предложенный @MatthieuWespthal (и загруженный cube.vtu , который не может правильно установить Scale Array
:
from paraview.simple import *
cubevtu=XMLUnstructuredGridReader(FileName=['cube.vtu'])
glyph1 = Glyph(Input=cubevtu,GlyphType='Arrow')
glyph1.OrientationArray = ['POINTS', 'No orientation array']
glyph1.ScaleArray = ['POINTS', 'f1']
glyph1.ScaleFactor = 0.1
glyph1.GlyphTransform = 'Transform2'
renderView1 = GetActiveViewOrCreate('RenderView')
glyph1Display = Show(glyph1, renderView1)