Dear compas team,
Let me use this toy example;
I control the x-value of a point, with a compas_view2 slider. I can see my point updating inside compas_view2.
If a line has its origin at the above-mentioned point, is there a way to update it in compas_view2 without explicitly redrawing the line inside the point slider?
@Li_Chen can objects be parented and updated like that?
Yes, but partially.
If I’m not mistaken, on creation of line, the point is rebuild, this means you would need to update the line data in the slider but no need to rebuild the object itself.
Here’s an example
from compas.geometry import Point, Line
from compas.colors import Color
from compas_view2.app import App
p1 = Point(0, 0, 0)
p2 = Point(0, 0, 1)
line = Line(p1, p2)
viewer = App(viewmode="shaded", enable_sidebar=True, width=1600, height=900)
pointobj1 = viewer.add(p1, pointsize=20, pointcolor=(1, 0, 0))
pointobj2 = viewer.add(p2, pointsize=20, pointcolor=(0, 1, 0))
lineObj = viewer.add(line, linewidth=2)
@viewer.slider(title="Slide Point", maxval=100, step=1, bgcolor=Color.white())
def slide(value):
value = value / 100
p1.x = value
pointobj1.update()
# Update line start point
line.start = p1
lineObj.update()
viewer.view.update()
viewer.run()
1 Like