I can’t seem to find any documenation that makes reference to the ghenv functions/classes in ghpython. I’m talking about lines like the following:
ghenv.component.message
or ghenv.component.params.input
or similar.
Where can I find the documentation? I would like to see what tools I have at my disposal. So far I have only found and figured out what these lines are by looking at the Ladybug/Honeybee code. I have looked all over all the Rhino Developer docuemntation, grasshopper documentaiton, and really anything linked from this page Rhino and Grasshopper Developer Documentation (rhino3d.com)
As I said in the original post, I have already looked over all these document for help and found no instance of the string “ghenv”. I have even download all the docuset available and found nothing in them.
Is there a specific documents I should look at? is it called something else beside “ghenv” in the documentation?
Yes, you are correct. Some info, as @AndersDeleuran mentioned, is on this page. We do not encourage the modification of Grasshopper behavior via scripting components, and especially not UI modification. For this reason, we do not document ghenv. Sometimes, users request ways to modify Grasshopper behavior nonetheless, and therefore, we show them via this variable, that simply contains a reference to the current GH_Component instance (see documentation links below). The variable itself is open-sourced, so you can see what it does. It’s just a container, really.
The ghenv.Component part returns a GH_Component class instance. You access Params and then Input. Make sure you get capitalization right!
Thanks,
Giulio
–
Giulio Piacentino
for Robert McNeel & Associates giulio@mcneel.com
I am pretty confident already with ghpython coding geometry and shape constriction (or more specifically, lots of math to be quick, then a little bit of conversion of number to breps, lines, meshes, planes, etc).
We are trying to develop in house components and as myself and my team realize new input and output we need, we would like to automatically update those on our ghpython components instead of needing to go in manually. In looking at some example usage of the ghenv library, I determined that I could it it to execute the automatic creating on inputs and outputs. I see no reason why this documentation should be hidden/kept away from the development community because clearly there are good uses for ghenv. The Ladybug team uses it regularly and they had to learn of it from somewhere. Why can’t the rest of us have the same access? I’m not even the first person to ask this.
We don’t want to keep anything away, when you take responsibility, you are free to do anything. The cases you mention are evidence for that. We also generally only help in public. There is however a good reason not to encourage beginners’ experimentations just on this one – not without a word of warning.
The naive implementation will break Grasshopper definitions solving, might possibly lead to loss of data and doing the wrong operation to the Grasshopper graph at the wrong time might lead to users of the code that cannot open or cannot save files anymore. How good is that? Of course, we don’t want that to happen. And I’m sure neither do you.
In particular, regarding the usage that you are after, it’s possible or not, depending on the solution timing. You are allowed to change the topology of the solution, with all precautions, when it’s not computing. This means, not inside the script solver itself. This is all also already explained, publicly, in the discussions here below.
I hope this makes it a little clearer. There’s no “rest of us”. These are all examples. Like always, in code, there are hundreds of ways to get to similar outcomes. And all variables exposed by ghenv, mentioned above, are documented in the Grasshopper SDK. Thanks,
Giulio
–
Giulio Piacentino
for Robert McNeel & Associates giulio@mcneel.com