Proper access of Rhino Objects from GrassHopper?

rhino5

#1

OK, so when I try to list the Rhino objects from a grasshopper component SolveInstance method (using C#), I see a “warning” text in the mouseover help text, suggesting that I do not use ActiveDoc to retrieve Rhino objects.

foreach (... Rhino.RhinoDoc.ActiveDoc.Objects.GetObjectList(ObjectType.Mesh))

What is the recommended safe way to list Rhino objects?

// Rolf


(David Rutten) #2

ActiveDoc is problematic because Rhino on Mac is multi-document capable, and quite possibly future versions of Rhino for Windows will be as well. So if your code is executing within the context of some specific document, using ActiveDoc may give you the wrong document.

However this document context is typically only provided to you when you’re writing Rhino Command plug-ins. From within Grasshopper, you have little choice but to use this dangerous method.


#3

OK, I will have to use it then.

In cases where this would be risky, is it possible to check if there are multiple documents open?

// Rolf


(David Rutten) #4

Yup, RhinoDoc.OpenDocuments(). Never used that method in my life, but I think that’s what it’s for.


#6

Ah, there it was. Thanks.

// Rolf