I noticed that when using the Component node in Grasshopper, upstream objects do not update unless the graph is recomputed. Updating the component in Tekla refreshes its internal content, but nothing upstream is triggered. This became an issue when using definitions through Rhino.Inside Tekla: if a component contains a sub-component, every change in the parent forces the child to reinitialize its values, instead of propagating updates properly.
I am trying to reproduce the same output, but in my case the child component is reinitialized every time the parent component is updated.
What I want is bidirectional update behavior:
updating the child component should trigger an update in the parent
updating the parent should trigger an update in the child
Instead, the current behavior resets the child’s values whenever the parent changes, rather than propagating updates between them.
Thank you.
This is the support forum for the Grasshopper-Tekla Live Link and for Rhino.Inside Tekla Structures (aka Grasshopper Component in Tekla Structures), managed by Tekla.
I wasn’t able to send an example because I need to internalize Tekla inputs, and I wasn’t able to :/.
I made a recording explaining the issue :
This impacts the fact that If I have two related components. Updating the child in Tekla does not trigger an update in the parent (nothing upstream is updated). I must manually update/recompute the parent.
Hi, sorry for the long delay. It seems something has changed since that demo video. The latest WIP update to the link should take care of at least that scenario and again let you retain manual updates to children, give it a go:
As before, if you are setting attribute values for your child components from within the parent definition, then those attributes will still be reset each time the parent is updated. This applies if you use a preset file to set the attributes as well. So don’t set attributes that you want to update only through the child components from the parent definition.
I’m not too sure how you could achieve bi-directionality though while preventing an infinite loop . If you build something into the child component that triggers an update to the parent component, the child component would then automatically get modified again since its parent gets modified, resulting in the child triggering another update to the parent and so on. So when the child sends the signal to the parent to make an update, the child needs to discard any triggers to update itself until the parent is done.