feat(plotly): opstool-style contour, loads, supports, ghost and animation
Bring the Plotly canvas in line with opstool's visualisation recipes. Camera / interaction: - frame the camera in plotly's normalized scene units, using the model bounds (grid excluded); a data-unit eye rendered the model as a speck - use turntable dragmode so Z stays up and the horizon stays level - align mouse bindings with the PyVista/VTK backend and document them in Help → Mouse Controls Visualisation: - colour deformed / modal shapes by response with a shared colourbar - scale load arrows by |F|, tint per load pattern, hover the magnitude, and fix cones rendering as oversized fins (sizemode scaled, not absolute) - draw DOF-accurate support glyphs (ported from opstool; see NOTICE) - add an undeformed-reference overlay on both canvas backends - play mode shapes with plotly frame animation in-page Tests: builder unit tests plus GUI regression tests for gestures, the deformed push, the undeformed reference and animation payloads.
This commit is contained in:
parent
1b0620a392
commit
d3878f23b3
26 changed files with 1687 additions and 153 deletions
|
|
@ -100,8 +100,15 @@ def test_snap_marker_shows_clears_and_tracks_the_camera(qtbot) -> None: # type:
|
|||
assert float(shown["left"].rstrip("px")) > 0
|
||||
assert float(shown["top"].rstrip("px")) > 0
|
||||
|
||||
# Orbiting moves the target on screen without any plotly redraw.
|
||||
_run_js(canvas, qtbot, "Plotly.relayout('plot',{'scene.camera.eye':{x:-9,y:6,z:4}})")
|
||||
# Orbiting moves the target on screen without any plotly redraw. A top
|
||||
# view is used because a point near the scene centre projects to nearly
|
||||
# the same pixel from opposite diagonal views.
|
||||
_run_js(
|
||||
canvas,
|
||||
qtbot,
|
||||
"Plotly.relayout('plot',{'scene.camera.eye':{x:0,y:0,z:40},"
|
||||
"'scene.camera.up':{x:0,y:1,z:0}})",
|
||||
)
|
||||
qtbot.wait(600)
|
||||
moved = _json_state(_run_js(canvas, qtbot, _MARKER_STATE))
|
||||
assert moved["display"] == "block"
|
||||
|
|
|
|||
Loading…
Reference in a new issue