.. DO NOT EDIT. .. THIS FILE WAS AUTOMATICALLY GENERATED BY SPHINX-GALLERY. .. TO MAKE CHANGES, EDIT THE SOURCE PYTHON FILE: .. "examples/002-workspace-and-views.py" .. LINE NUMBERS ARE GIVEN BELOW. .. only:: html .. note:: :class: sphx-glr-download-link-note :ref:`Go to the end ` to download the full example code. .. rst-class:: sphx-glr-example-title .. _sphx_glr_examples_002-workspace-and-views.py: .. _workspace_and_views_example: Workspaces, solutions, and view management =========================================== This example demonstrates advanced PyResultExplorer functionality including: - **Workspace management** for organizing and accessing visualization sessions. - **Solution management** to load and work with result data. - **View assignment** to display specific analysis results in viewports. - **Viewport layouts** by creating multiple viewports in grid configurations. - **Display options** to customize visualization properties like mesh edges and labels. - **Snapshots** to capture and save viewport visualizations as images. - **Synchronization** of camera, time steps, and color ranges across viewports. This example uses a transient structural analysis result with multiple load cases. .. GENERATED FROM PYTHON SOURCE LINES 37-38 Import the standard library and third-party dependencies. .. GENERATED FROM PYTHON SOURCE LINES 38-41 .. code-block:: Python from slugify import slugify .. GENERATED FROM PYTHON SOURCE LINES 42-43 Import the Result Explorer dependencies. .. GENERATED FROM PYTHON SOURCE LINES 43-51 .. code-block:: Python from ansys.result_explorer.core import launch_result_explorer from ansys.result_explorer.core.examples import ( ExampleKeys, get_example_file, get_example_snapshot_settings, ) from ansys.result_explorer.core.models import ViewportDirection .. GENERATED FROM PYTHON SOURCE LINES 52-55 Launch Result Explorer ----------------------- Start a Result Explorer instance for this example. .. GENERATED FROM PYTHON SOURCE LINES 55-57 .. code-block:: Python rx = launch_result_explorer() .. GENERATED FROM PYTHON SOURCE LINES 58-62 Locate example data -------------------- Get the path to the example result file. This file contains transient results with multiple load cases for demonstration. .. GENERATED FROM PYTHON SOURCE LINES 62-64 .. code-block:: Python rst_path = get_example_file(ExampleKeys.RST_MULTIPLE_CONNECTIONS) .. GENERATED FROM PYTHON SOURCE LINES 65-68 Manage workspaces ------------------ List existing workspaces and create a new one for this example. .. GENERATED FROM PYTHON SOURCE LINES 68-73 .. code-block:: Python workspaces = rx.list_workspaces() print("Existing workspaces:") for ws in workspaces: print(f" - {ws}") .. rst-class:: sphx-glr-script-out .. code-block:: none Existing workspaces: - Workspace: Workspace 1 .. GENERATED FROM PYTHON SOURCE LINES 74-75 Create a new workspace to organize our visualization session. .. GENERATED FROM PYTHON SOURCE LINES 75-82 .. code-block:: Python workspace = rx.create_workspace(name="PyRX Workspace") workspaces = rx.list_workspaces() print("Existing workspaces after creation:") for ws in workspaces: print(f" - {ws}") .. rst-class:: sphx-glr-script-out .. code-block:: none Existing workspaces after creation: - Workspace: Workspace 1 - Workspace: PyRX Workspace .. GENERATED FROM PYTHON SOURCE LINES 83-84 List viewports in the newly created workspace. .. GENERATED FROM PYTHON SOURCE LINES 84-89 .. code-block:: Python viewports = workspace.viewports print("Viewports in workspace:") for vp in viewports: print(f" - {vp}") .. rst-class:: sphx-glr-script-out .. code-block:: none Viewports in workspace: - Viewport(5b8411cc-ec4b-4e04-babe-137ad298b543) .. GENERATED FROM PYTHON SOURCE LINES 90-93 Create and manage solutions ---------------------------- Create a solution from the result file and list available views. .. GENERATED FROM PYTHON SOURCE LINES 93-100 .. code-block:: Python sol_name = "PyRX Solution" sol = rx.create_solution( name=sol_name, file_path=rst_path, ) print(f"Created solution:\n{sol}") .. rst-class:: sphx-glr-script-out .. code-block:: none Created solution: ====================================================================== Solution: PyRX Solution ====================================================================== ID: 6db1d4c8-6f33-45a4-a812-6efd861ede60 Description: N/A Status: Ready: Yes Live: No Result Files: - /home/runner/work/pyresultexplorer/pyresultexplorer/tests/data/multiple_connections.rst (key: rst) Analysis Information: Physics Type: mechanical Analysis Type: static Solver Version: 24.1 Unit System: MKS: m, kg, N, s, V, A, degC Mesh Information: Num Elements: 246 Num Nodes: 844 Num Named Selections: 2 Num Bodies: 18 Distance Unit: m Results Information: Num Sets: 1 Available Results: 28 Time/Freq Unit: s Available Plot Results: Displacement - total_displacement - displacement [X, Y, Z] Stress - stress_tensor [XX, YY, ZZ, XY, YZ, XZ] - equivalent_von_mises_stress - principal_stress_1 [1] - principal_stress_2 [2] - principal_stress_3 [3] Elastic Strain - elastic_strain_tensor [XX, YY, ZZ, XY, YZ, XZ] - equivalent_elastic_strain - principal_elastic_strain_1 [1] - principal_elastic_strain_2 [2] - principal_elastic_strain_3 [3] Structural Temperature - structural_temperature Strain Energy - strain_energy Kinetic Energy - kinetic_energy Contact - contact_status - contact_pressure - contact_penetration - contact_sliding_distance - contact_gap_distance - contact_friction_stress - contact_total_stress - contact_fluid_penetration_pressure - contact_surface_heat_flux Beam Results - beam_axial_force - beam_bending_moment_y - beam_bending_moment_z - beam_torsional_moment - beam_axial_stress - beam_axial_strain - beam_shear_force_y - beam_shear_force_z User Defined Solver Text Outputs (Logs): None ====================================================================== .. GENERATED FROM PYTHON SOURCE LINES 101-102 List all existing solutions in the Result Explorer instance. .. GENERATED FROM PYTHON SOURCE LINES 102-107 .. code-block:: Python solutions = rx.list_solutions() print("Existing solutions:") for sol_item in solutions: print(f" - {sol_item.name}") .. rst-class:: sphx-glr-script-out .. code-block:: none Existing solutions: - PyRX Solution .. GENERATED FROM PYTHON SOURCE LINES 108-110 List available views in the solution. Views represent specific analysis results like displacement, stress, strain, etc. .. GENERATED FROM PYTHON SOURCE LINES 110-115 .. code-block:: Python views = sol.views print("Views in solution:") for v in views: print(f" - {v}") .. rst-class:: sphx-glr-script-out .. code-block:: none Views in solution: - MeshView: Mesh - PlotView: Displacement - PlotView: Equivalent Stress (von-Mises) - PlotView: Contact Status - ChartView: Min/Max Displacement Over Time - ChartView: Min/Max Equivalent Stress Over Time .. GENERATED FROM PYTHON SOURCE LINES 116-119 Assign a view to a viewport ---------------------------- Find a displacement view and assign it to a viewport in the workspace. .. GENERATED FROM PYTHON SOURCE LINES 119-126 .. code-block:: Python view = next((v for v in views if "Displacement" in v.name), None) assert view is not None, "No displacement view found in solution" print(f"Opening view: {view.name} in the workspace.") viewport = workspace.assign_view(view=view, wait=True) print(f"Assigned viewport: {viewport}") .. rst-class:: sphx-glr-script-out .. code-block:: none Opening view: Displacement in the workspace. Assigned viewport: Viewport(5b8411cc-ec4b-4e04-babe-137ad298b543) .. GENERATED FROM PYTHON SOURCE LINES 127-130 Capture and save snapshots --------------------------- Take a snapshot of the viewport and save it as a PNG file. .. GENERATED FROM PYTHON SOURCE LINES 130-135 .. code-block:: Python viewport.save_snapshot( file_path=slugify(sol_name + " - " + view.name) + ".png", settings=get_example_snapshot_settings(), ) .. image-sg:: /examples/images/sphx_glr_002-workspace-and-views_001.png :alt: 002 workspace and views :srcset: /examples/images/sphx_glr_002-workspace-and-views_001.png :class: sphx-glr-single-img .. GENERATED FROM PYTHON SOURCE LINES 136-139 Create a viewport grid layout ------------------------------- Create a 2x2 grid by adding viewports in different directions. .. GENERATED FROM PYTHON SOURCE LINES 139-156 .. code-block:: Python print("Creating 2 x 2 grid layout...") top_left_viewport = viewport bottom_left_viewport = workspace.create_viewport( viewport=top_left_viewport, direction=ViewportDirection.VIEWPORT_DIRECTION_BOTTOM, ) top_right_viewport = workspace.create_viewport( viewport=top_left_viewport, direction=ViewportDirection.VIEWPORT_DIRECTION_RIGHT, ) bottom_right_viewport = workspace.create_viewport( viewport=bottom_left_viewport, direction=ViewportDirection.VIEWPORT_DIRECTION_RIGHT, ) .. rst-class:: sphx-glr-script-out .. code-block:: none Creating 2 x 2 grid layout... .. GENERATED FROM PYTHON SOURCE LINES 157-161 Configure viewport synchronization ------------------------------------ Set synchronization options so that camera, time steps, and color ranges are shared across all viewports in the workspace. .. GENERATED FROM PYTHON SOURCE LINES 161-164 .. code-block:: Python print("Setting workspace sync options...") workspace.set_sync(camera=True, time_freq=True, legend=True) .. rst-class:: sphx-glr-script-out .. code-block:: none Setting workspace sync options... .. GENERATED FROM PYTHON SOURCE LINES 165-168 Fullscreen display ------------------- Set a viewport to fullscreen mode for focused viewing. .. GENERATED FROM PYTHON SOURCE LINES 168-171 .. code-block:: Python print("Setting viewport to fullscreen...") workspace.set_fullscreen_viewport(viewport=top_left_viewport) .. rst-class:: sphx-glr-script-out .. code-block:: none Setting viewport to fullscreen... .. GENERATED FROM PYTHON SOURCE LINES 172-173 Exit fullscreen mode. .. GENERATED FROM PYTHON SOURCE LINES 173-176 .. code-block:: Python print("Exiting fullscreen...") workspace.exit_fullscreen() .. rst-class:: sphx-glr-script-out .. code-block:: none Exiting fullscreen... .. GENERATED FROM PYTHON SOURCE LINES 177-181 Modify display options ----------------------- Customize viewport visualization properties using the context manager. Toggle mesh edges and enable minimum/maximum labels. .. GENERATED FROM PYTHON SOURCE LINES 181-186 .. code-block:: Python print("Modifying view display options...") with viewport.update_display_options() as opts: opts.show_mesh_edges = not opts.show_mesh_edges opts.show_min_max_labels = True .. rst-class:: sphx-glr-script-out .. code-block:: none Modifying view display options... .. GENERATED FROM PYTHON SOURCE LINES 187-190 Capture a modified snapshot ---------------------------- Take a new snapshot after modifying display options and save it as a separate file. .. GENERATED FROM PYTHON SOURCE LINES 190-195 .. code-block:: Python top_left_viewport.save_snapshot( file_path=slugify(sol_name + " - " + view.name) + "-modified.png", settings=get_example_snapshot_settings(), ) .. image-sg:: /examples/images/sphx_glr_002-workspace-and-views_002.png :alt: 002 workspace and views :srcset: /examples/images/sphx_glr_002-workspace-and-views_002.png :class: sphx-glr-single-img .. GENERATED FROM PYTHON SOURCE LINES 196-199 Clean up -------------------- Delete the bottom right viewport to demonstrate viewport deletion. .. GENERATED FROM PYTHON SOURCE LINES 199-203 .. code-block:: Python print("Deleting bottom right viewport...") workspace.delete_viewport(viewport=bottom_right_viewport) rx.stop() .. rst-class:: sphx-glr-script-out .. code-block:: none Deleting bottom right viewport... .. rst-class:: sphx-glr-timing **Total running time of the script:** (0 minutes 20.625 seconds) .. _sphx_glr_download_examples_002-workspace-and-views.py: .. only:: html .. container:: sphx-glr-footer sphx-glr-footer-example .. container:: sphx-glr-download sphx-glr-download-jupyter :download:`Download Jupyter notebook: 002-workspace-and-views.ipynb <002-workspace-and-views.ipynb>` .. container:: sphx-glr-download sphx-glr-download-python :download:`Download Python source code: 002-workspace-and-views.py <002-workspace-and-views.py>` .. container:: sphx-glr-download sphx-glr-download-zip :download:`Download zipped: 002-workspace-and-views.zip <002-workspace-and-views.zip>` .. only:: html .. rst-class:: sphx-glr-signature `Gallery generated by Sphinx-Gallery `_