algorithmic modeling for Rhino
In participating in another discussion about path and data management, I've come across something that seems odd to me...it appears that whenever a simplified, singly indexed path structure is fed into any of the list components, the paths are automatically renumbered. If, however, there is even one additional path index (even if they match throughout the tree), then the path structure can be retained. Is this deliberate? I guess I don't quite understand the logic of this setup:
Tags:
I can explain why it's happening, the code was intended to work this way, though I concede it doesn't make a lot of sense in this case. It's all to do with the detection of the master parameter. The MP is the component input parameter which is deemed most relevant and is therefore used as the mould for creating output data paths.
The logic of selecting which input is the MP is as follows:
That's all there's to it. {0;0}{0;2} wins because it is has a maximum path length of 2 whereas the i and w inputs only have a maximum path length of 1. However by simplifying the data you end up with maximum path length of 1 {0}{2}, and since the L inputs have List access it loses out in this case.
I'm happy to make adjustments to the logic, but they need to be good. Changing this code will likely change the way a lot of files already work and if people rely on it working in a specific way we'll break those files, which is something to be avoided at almost any cost. So unless the proposed modification is clearly an improvement, I don't want to change this logic.
--
David Rutten
david@mcneel.com
Poprad, Slovakia
Fair enough: the singly-indexed path loses in the Octagon. Yes, certainly changing this behavior would create breakage in many a definition, so I wouldn't advocate for it. Maybe as a means to deal with it an append/prepend path component could be added?
I know that I very heavily simplify my data paths (being able to do it on the inputs and outputs of components is really such an incredibly useful option) in order to more easily manage them in large definitions. I also try to stay away from using the path mapper...not so much because I don't like it, but because often with different counts of geometries/applications of a definition, I'll just have different numbers of paths in each instance, and having to re-code the path mapper gets annoying in such cases...so as a result I rely very heavily shifting paths, which is great for maintaining relativity in structure. Having the ability to append/prepend would ensure that I could coach my data paths to always win in the Octagon...It's exactly this kind of component that I started Tree Sloth for, so I'll just plan on adding it there.
An additional rule that may make sense would be:
I think it probably wouldn't cause much breakage because it is a rare case and it does make intuitive sense. Another thing which I've been thinking about is the ability to manually override the master parameter. It would obviously be a very expert user function, but it wouldn't be difficult to implement and it wouldn't break anything.
--
David Rutten
david@mcneel.com
Poprad, Slovakia
I added one rule:
It certainly makes this particular case more obvious, but it is a breaking change. However I feel it makes a lot of sense so I think I'll leave it in for 0.9.0015
--
David Rutten
david@mcneel.com
Poprad, Slovakia
sweet!
that would save a lot of path mapping....
Hello David,
could you further clarify point number 1. Thanks again.
When an input has Tree access, it is not iterated over. All the data in the entire parameter is always used every single time. If a component only runs once per solution that is not a problem, but if a component runs more than once I have to make sure the output doesn't all end up in a single list (unless of course it's meant to up that way).
Basically whenever I need to start writing output data to a different list I need to know what path to associate with that list. I can easily dream up unique paths but it makes more sense to use the existing paths from the inputs. In order to recycle paths from inputs I need paths that actually differ every now and again and as we've already established trees never differ because they are always consumed whole.
--
David Rutten
david@mcneel.com
Poprad, Slovakia
Ok thanks David. Is this going in the FAQ section?
Probably should. It's an important topic, but very hard to explain.
--
David Rutten
david@mcneel.com
Poprad, Slovakia
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