Deleting Rhino objects during solution time

unhandled
#1

How would I delete objects in RhinoDoc and not break GH?
I have pipeline components getting objects on layers and I’d like to use GhPy
rs.ObjectsByLayer()
rs.DeleteObjects()
to delete objects by layer. It would generate an error saying the guid is no longer available during solution.

The only safe way to Update Sliders in GhPython
(Giulio Piacentino) #2

This is a new question… I’ll move it to a new thread.

(Giulio Piacentino) #3

The simple answer is that you cannot delete referenced Rhino objects during a Grasshopper solution (within SolveInstance(), or RunScript()). You can however do that outside the solution time. For example, in the def OnClicked(self, obj, args): method mentioned in the original thread:

In general, it would be best to only delete non-referenced objects.
@DavidRutten could have more info regarding this.

#4

In original post, OnClick() has a nested method Update(), which called ExpireSolution() at the end. Does it mean I have to find all my pipeline components and call ExpireSolution() on them?

(Giulio Piacentino) #5

If you delete a referenced object, the changes of which are being listened to, that deletion should trigger the update by itself. I didn’t write the Pipeline, so I am interpreting @DavidRutten’s coding intentions.

#6

Just starting to understand the OnClick() a little more. It’s only run upon clicking the context menu on the component.
For my case I can’t really trigger the OnClick() by an input into the component, can I? That would be in the RunScript(), therefore re-run GH solution.

(Keyu Gan) #7

No, you can’t. Just as you said, by design, an input change will raise a recalculation. There are some ways to circumvent it but it’s against GH’s philosophy.

(David Rutten) #8

Possibly, possibly not. I do respond immediately to all Rhino object events but I don’t start expiring stuff or triggering new solution until the RhinoDoc.EndOpenDocument or Command.UndoRedo events fire.

So if you start making changes to the Rhino document outside a command or an undo block, there will not be an automatic update in GH.