algorithmic modeling for Rhino
Hi All,
I was wondering (and couldn't really find a direct answer on the forum) whether it is possible to dynamically control the number of input parameters. Let's say if a small component with only one input, receives and input, a second input appears, and so on...
I would like to develop a component which has this functionality (mainly from a user friendliness perspective).
Thanks for your suggestions.
Joost
Tags:
Hi Joost,
it is possible to modify the number of parameters (input and output), as long as you're not modifying during a solution. You'll also have to make sure that you (de)serialize correctly. It's not exactly trivial stuff.
I attached a crude attempt. It won't copy/paste/save/open correctly. If this is roughly what you're looking for I'll add that code as well.
--
David Rutten
david@mcneel.com
Poprad, Slovakia
...aaaaand the attachment.
--
David Rutten
david@mcneel.com
Poprad, Slovakia
Hi David,
this seems to be exactly what I mean. I'll try to implement it using C#, see how far I get.
Thanks!
The open-source GhPython component also contains a IGH_VarParamComponent implementation in C#. You can read it and download if from here.
I hope this might also help,
- Giulio
______________
giulio@mcneel.com
McNeel Europe
I'm ditching IGH_VarParamComponent as we speak. It will remain in the SDK but it will be marked Obsolete. I'm exposing a new interface (IGH_VariableParameterComponent, confusing? how so?) that is supposed to provide a much better UI as well as an easier implementation.
--
David Rutten
david@mcneel.com
Poprad, Slovakia
That's fine. I'll update GhPython when IGH_VariableParameterComponent is generally available. Or if you feel like trying the new interface out, go ahead :)
- Giulio
_______________
giulio@mcneel.com
McNeel Europe
I'm struggling with the evenhandlers (AddHandler in vb). Could you have a look at the uploaded code? And perhaps add some instructions on how to deserialize correctly.
Thanks.
Joost
I havn't recreated the solution, but if the signature of Param_ObjectChanged is correct, which seems like, this is what line 61 can look like:
pManager[0].ObjectChanged += Param_ObjectChanged;
You can reference methods with their name and without parentheses, or build the delegate with an explicit constructor but still without parentheses.
The longer syntax for line line 120 is then:
param.ObjectChanged += new IGH_DocumentObject.ObjectChangedEventHandler
(Param_ObjectChanged);
that can also be:
param.ObjectChanged += Param_ObjectChanged;
- Giulio
_______________
giulio@mcneel.com
McNeel Europe
Great, thanks! It works...
Do you think it's also possible to make it work the other way around, as in: removal of a parameter results in less input parameters?
Probably David can help, I think that the code might need some finishing. He said above: "If this is roughly what you're looking for I'll add that code as well".
Thanks,
- Giulio
_______________
giulio@mcneel.com
McNeel Europe
Hello,
I just wrote the code to dynamically remove a parameter (when the wire is disconnected) and it works fine, however, I am not quite sure how to delete the Handler :(
So if I want to un-register the input parameter at 'index', does the following code remove that handler?
Params.Input[index].ObjectChanged -= InputParam_ObjectChanged; //this is the name of my handler
Below is the screenshot of the handler definition, the first half is pretty much what David wrote, below that is my code (click to enlarge)!
Hi David,
I have a follow-up question which holds relation to this thread. So far I managed to create a component which dynamically expands or shrinks according to the amount of inputparameters.
Now, the follow-up question:
Is it possible to create a component with one initial parameter (say an integer), and set the extra input parameters according to this initial input?
The answer might be contained in your previous reply:
'it is possible to modify the number of parameters (input and output), as long as you're not modifying during a solution.'
But I'm not sure.
Thanks.
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
Added by Parametric House 0 Comments 0 Likes
© 2024 Created by Scott Davidson. Powered by