Slider

../../_images/slider.gif
from compas.colors import Color
from compas.geometry import Bezier
from compas.geometry import Point
from compas.geometry import Polyline
from compas_viewer import Viewer
from compas_viewer.layout import Slider
from compas_viewer.scene import PointObject

curve = Bezier([[0, 0, 0], [3, 6, 0], [5, -3, 0], [10, 0, 0]])

viewer = Viewer(rendermode="shaded", width=1600, height=900)


pointobj: PointObject = viewer.scene.add(Point(*curve.point_at(0)), pointsize=20, pointcolor=Color.red(), show_points=True)  # type: ignore
curveobj = viewer.scene.add(Polyline(curve.to_polyline()), linewidth=2, linecolor=Color.blue(), show_points=False)


def slide(value, additional_var):
    value = value / 100
    print(additional_var + str(value))
    pointobj.geometry = curve.point_at(value)
    pointobj.init()
    pointobj.update()
    viewer.renderer.update()


viewer.layout.sidedock.add_element(Slider(slide, 0, 0, 100, 1, "Slide Point", additional_var="Slide the point along the curve at "))


viewer.show()