How to filter a list based on curve length

Hi, there.

Need to filter a list into 3 based on curve length.

I want to get 3 kinds of grids of different lengths while keeping them horizontal. And then filter them into 3 lists.


As you can see, the grids would be like what I circled in this picture.

There are two methods I’m trying.

One is isotrim the surface then select random then join them, but it may result in vertical grid and I don’t know how to filter them.

The other is divide and join contour lines to escape the underlying vertical problem. But still, how can I filter them into three lists

Here are the files.
filter grids.3dm (2.8 MB)
filter grids.gh (22.0 KB)
?

Hope guys can salvage the novice.

Many thanks.

do you have any rule of thumb that the filtering must follow?
assuming panel types are A,B,C → is there any configuration you consider “bad” so want to avoid?
like for instance:
A A A A A C → is it ok to not have all 3 different types present in the same row?
A A A A B C → is it ok to have “big disproportion” between the amounts of different panel type?
A B A A C A → A appears, then something else, then A again, then something else, then A again: is it ok for a type to appear multiple times in separate “islands” in the very same row? or:
A A B B B C → or once a type appears it can be repeated, but when a new one comes then the old type shouldn’t be used anymore?


if nothing of the above matters, then you can just random integer range [0,2] and bam, you have your filter (just need to find seed value you like):

I don’t know specifically what you want to do with those panels, but I -personally- prefere to not reorganize panel lists into panel types unless strictly necessary… but if you really want a data tree based on panel type you might go with something like this:

[Create Tree component from Elefront, same as unweave + entwine]
filter grids_Re.gh (19.5 KB)

1 Like

Really appreciate your help!

Still, i’m getting 3 lists now, but each panel is separate.

Is there a way to get 3 list in which,
list 1 contains panels that have no panel adjacent to them horizontally
list 2 contains panels that have only 1 panel adjacent to them horizontally
list 3 contains panels that have only 2 panels adjacent to them horizontally

and I also find out if I try to join the surfaces, they may join horizontally or vertically, but I hope they only join horizontally even if there are panels on top or below it.

need to better understand :slight_smile:

→ each row of panel should be independent from the others
→ you want to get groups of 1, 2 or 3 panels joined together, and want them to be in separate lists
→ between panels that belong to two different lists should there be a “hole”? like empty space in the size of a single panel?

1 Like

You totally get it! Except the last one, there’s no need to have a hole(but curious how to do that if it doesn’t cause you too much trouble)

well… let me say I thought it would be an easy task to just use domains in first place to trim panels to their final length (meaning not having to join unit-panels together) but it involved more suffering than I thought :slight_smile: (btw, no “hole” thing at the moment)

filter grids_Re_Re_Re.gh (19.0 KB)

1 Like