Replies: 5 comments 6 replies
-
from trame.app import get_server
from trame.ui.vuetify import VAppLayout
from trame.widgets import vuetify, vtk as vtk_widgets
import vtk
import os
server = get_server(client_type="vue2")
state = server.state
reader = vtk.vtkXMLUnstructuredGridReader()
mapper = vtk.vtkDataSetMapper()
actor = vtk.vtkActor()
renderer = vtk.vtkRenderer()
render_window = vtk.vtkRenderWindow()
def initialize_pipeline():
global mapper, actor, renderer, render_window
# 创建 Mapper 和 Actor
mapper = vtk.vtkDataSetMapper()
# ini null data
empty_data = vtk.vtkUnstructuredGrid()
mapper.SetInputData(empty_data) #
actor.SetMapper(mapper)
#
render_window.AddRenderer(renderer)
renderer.AddActor(actor)
renderer.SetBackground(0.2, 0.2, 0.2)
renderer.ResetCamera()
initialize_pipeline()
def load_vtu_file(file_path):
global reader, mapper, renderer, render_window
reader.SetFileName(file_path)
reader.Update()
data = reader.GetOutput()
mapper.SetInputData(data)
mapper.Update()
renderer.ResetCamera()
renderer.ResetCameraClippingRange()
render_window.Render()
if data.GetPointData().GetNumberOfArrays() > 0:
array = data.GetPointData().GetArray(0)
scalar_range = array.GetRange()
mapper.SetScalarRange(scalar_range)
html_view.update()
def on_file_select(file_path):
f = os.path.join(os.path.abspath(os.path.dirname(__file__)), "data/" + file_path)
if os.path.exists(f):
load_vtu_file(f)
else:
print(f"file not exists: {file_path}")
with VAppLayout(server):
with vuetify.VContainer(fluid=True, classes="fill-height pa-0"):
with vuetify.VRow(classes="fill-height"):
with vuetify.VCol(cols=3, classes="pr-4"):
vuetify.VTextField(
v_model=("vtu_file", "Job-12_BOLT-1-RAD-22.vtu"),
label="VTU path",
dense=True,
hide_details=True,
)
vuetify.VBtn(
"load data",
click=lambda: on_file_select(state.vtu_file),
classes="mt-2",
)
with vuetify.VCol(cols=9, classes="fill-height"):
html_view = vtk_widgets.VtkLocalView(render_window)
html_view.update()
if __name__ == "__main__":
load_vtu_file(os.path.join(os.path.abspath(os.path.dirname(__file__)), "data/Job-12_BOLT-1-RAD-22.vtu"))
server.start() |
Beta Was this translation helpful? Give feedback.
-
Beta Was this translation helpful? Give feedback.
-
|
I see, when using the local view, we don't really care about the server side camera. You need to call reset camera on the client side once the model is fully loaded. |
Beta Was this translation helpful? Give feedback.
-
Still no answer ? Keep in mind that you can use our professional support for helping you getting result faster. |
Beta Was this translation helpful? Give feedback.
-
|
Because it can display normally after refreshing, I used code to make the browser refresh。 state change: |
Beta Was this translation helpful? Give feedback.




Uh oh!
There was an error while loading. Please reload this page.
-
When reloading the VTU file in the program, the VTU model is not centered and the size is not suitable for the window size。
The following code also does not take effect。
Beta Was this translation helpful? Give feedback.
All reactions