I’m developing a Grasshopper plugin and would like to use Cloud Zoo to distribute my license key.
I’m following the sample code here: See an example in GitHub
But I notice the example is meant for Rhino Plugin, not Grasshopper plugin. The issue is that GetLicense is inaccessible as Grasshopper component class is not inherited from Rhino.Plugin Class(image01), but if I create a local class inherited from Plugin class and invoke it within my gh component in order to invoke GetLicense, I encountered an issue in runtime stating that never creates an instance of PlugIn class(image02).
Does it mean that currently Cloud Zoo only support Rhino Plugin excluding Grasshopper plugin?
GetLicense() method should be called from a Rhino plug-in, either in the PlugIn class’
OnLoad() method as in the example, or in a command (
GetLicense() would need to be exposed to make it accessible outside of the PlugIn class).
Then, there should be some kind of mechanism that Grasshopper can use to verify that your Rhino plug-in was successful in retrieving a license. This can be as simple as a shared assembly that knows of the state of the license.
Thank you, it makes sense.
I’m wondering how can we expose
GetLicense() outside the PlugIn class?
GetLicense() is protected in the PlugIn class and I also cannot create a new PlugIn instance to access it.
Try wrapping the protected
GetLicense() method in an internal one…
public class ExamplePlugIn : PlugIn
Instance = this;
public static ExamplePlugIn Instance
get; private set;
internal bool CallGetLicense()
return GetLicense(LicenseCapabilities.SupportsRhinoAccounts, null, OnValidateProductKey, OnLeaseChanged);
// OnLeaseChanged, etc...
Then, in your command, you can call…
Thank you Will!
I also found an alternative way by calling
PlugIn.LoadPlugIn Method (Guid)
This method will load the Rhino plugin first, then GetLicense will be called automatically by overriding the OnLoad method.
Is it possible to use the Zoom license in a plugin compiled in Python?