Temporary panel placeholder for unrecognized objects

So i’m wondering if there’s a plugin or possible future feature of GH to create temporary placeholders for unrecognized components due to a file using plugins i don’t have

Since grasshopper is able to recognize the name of the plugin and component of the unrecognized object

wouldn’t something like this be possible?

or is it impossible because without the component it’s impossible to identify the input and output? (but couldn’t this be identified by the components that outputs and receives data from the component?)

Maybe there’s some kind of limitation I don’t understand and i’m saying something stupid, in which case can someone explain it?

and yes i could just install the missing plugin, but sometimes I’d already have similar components that does the same thing, in which case I don’t want to install a new plugin.

It’s been discussed several times before, see

but I agree it would be a nice feature to have. Don’t see much limitations technically - if the missing components derive simply from GH_Component it should be relatively simple to extract their parameters and dump them into GH_Params like in the picture above.

Perhaps I can get around to trying to implement this as an external plugin … anyone know the proper way of “asking” Grasshopper if a certain GUID corresponds to an installed component?

1 Like

Hm, I’ve tried to browse the documentation but found only this
http://developer.rhino3d.com/api/grasshopper/html/Methods_T_Grasshopper_Kernel_GH_ComponentServer.htm

It’s centered around Assembly though. Couldn’t find a direct pathway from InstanceId to assembly in my search by I must have missed it.

// Rolf

1 Like

Got it, so that’s

Grasshopper.Instances.ComponentServer.FindAssemblyByObject( <componentGuid>)

and test if the result is null. Somehow I didn’t come across this while searching, thanks :slight_smile:

Hm, I misread the info about this one. I thought it was the Guid for the assembly! To myself: Don’t think so much, read the letters instead, one by one if necessary.

// Rolf

Famous last words… turns out there are complications due to the way GH_Archive is structured. The parameter chunks don’t seem to store any information about their type at all ( GH_Number, GH_Curve, etc.), that’s handled by the (missing) component during deserialization.

And you can’t just upcast everything to Generic Data ( GH_Param<IGH_Goo> ) because that would potentially lose type-specific attributes, e.g. Param_Number takes Degrees / Expression modifiers, Param_Curve takes Reparameterize, etc.

There could be other workarounds, but it’s definitely not the simple unpack-and-dump I was expecting :confused:

Even better would be if all component plug-in developers started creating packages for the package manager that automates downloading of missing components.

There are already some available, like GhShaderNodes (8

Placeholders are now in the Rhino WIP version. Give them a try and see how they work: