algorithmic modeling for Rhino
Delete it from where?
This cannot be done during a solution, but if your code runs outside of solutions then it's relatively simple; GH_Document.RemoveObject() and GH_Document.RemoveObjects()
--
David Rutten
david@mcneel.com
Poprad, Slovakia
Hi David,
thanks for your fast reply .. I want to delete GH_Components from the Canvas (ActiveCanvas). Especially I want to delete all GH_Components which are having a "Warning" ( so all which are orange ) ..
I know, that I have to iterate over all GH_Components which are on the Active Canvas, but then I don't know how to solve the search for all Components with "Warnings".
I hope somebody can help me.
Thanks a lot and nice greetings
Alex
Try this:
Dim deleteList As New List(Of IGH_DocumentObject)
For Each obj As IGH_DocumentObject In doc.Objects
Dim actObj As IGH_ActiveObject = TryCast(obj, IGH_ActiveObject)
If (actObj Is Nothing) Then Continue For
If (actObj.RuntimeMessageLevel = GH_RuntimeMessageLevel.Warning) Then
deleteList.Add(actObj)
End If
Next
doc.RemoveObjects(deleteList, True)
--
David Rutten
david@mcneel.com
Poprad, Slovakia
Thanks David again for your fast reply.
Error: RemoveObjects is no Member of Rhino.RhinoDoc ??
What version Grasshopper do you have?
--
David Rutten
david@mcneel.com
Poprad, Slovakia
0.9.0014 + Rhino 5 (64Bit)
Really should be in there. I'm not exactly sure in what version this method was added but it was a long time ago. Are you writing this inside a script component or a Visual Studio project? If the latter, are you sure you're compiling against 0.9.0014 as well?
--
David Rutten
david@mcneel.com
Poprad, Slovakia
I am working inside a vb script component. I now got it working in some kind of way.
I just have the problem, that when i am removing an object the connection wires keep staying on the Canvas. Is there a way to prevent this? Or some kind of redrawing the Canvas?
In what kind of way have you got it working?
If you use RemoveObject or RemoveObjects, the objects should be automatically isolated (i.e. all wires should be disconnected). Also all recipient objects will be expires, all event handlers will be removed and the appropriate methods on the objects will be called to inform them that they have been removed from the document.
--
David Rutten
david@mcneel.com
Poprad, Slovakia
Hi David,
I realize this is quite an old thread, but I am dealing with the same problem here.
I am attempting to remove components from the canvas using a Visual Studio plugin component.
Whenever I use GH_Document.RemoveObject() I get 2 kinds of warnings:
Please find a simple sample script attached. I have moved my VS code into a C# script component for easy reference.
private void RemoveComponentsFromDocument()
{
GH_Document doc = GrasshopperDocument;
List<Grasshopper.Kernel.Components.GH_CleanTreeComponent> foundComponents = doc.Objects.OfType<Grasshopper.Kernel.Components.GH_CleanTreeComponent>().ToList();foreach(Grasshopper.Kernel.Components.GH_CleanTreeComponent obj in foundComponents)
{
doc.RemoveObject(obj, false);
}
}
What am I doing wrong? And how can I fix it?
You cannot delete objects from the document during a solution. This code must run either before or after a solution starts or ends.
The easiest way to deal with this is to schedule a solution and provide a callback method. The attached file doesn't add undo records...
Welcome to
Grasshopper
Added by Parametric House 0 Comments 0 Likes
Added by Parametric House 0 Comments 0 Likes
Added by Parametric House 0 Comments 0 Likes
Added by Parametric House 0 Comments 0 Likes
© 2024 Created by Scott Davidson. Powered by