How to get mesh pipes more organic?

Hello! I am working on this:


unnamed.gh (7.3 KB)

As input, any mesh should be able to be taken. I kind of like the result, but wish it would be more organic. I am thinking about something like this or this. Does anyone have an idea how to do that? It should be compatible with macOS.

Thanks!

Hello
did you look to that

1 Like

Thank you for the link! I just checked it. Since I am working with mesh and pipes, I don’t know how I can do something like that with my script. Could you please tell me how?

If I am not wrong MeshSkeleton outputs curves (lines indeed) so it must work.

Are you trying to fill the volume inside the mesh with smoothed pipes or a sort of lattice structure?
If so, try searching this forum for some of these terms

porous structure
bone-like
sponge
foam
lattice
3d voronoi
skeletal

and you’ll find many previous discussions on the topic that might help you
eg

1 Like

Thanks a lot! It starts to become interesting:

Do you have an idea how to avoid unconnected strings? It would be nice if it wouldn’t have any beginnings and ends.

You will have to use some topology like found in sand box. In this example you will find that point 0 (right bottom) is connected to a single point so it means it is an end

1 Like

Thank you! I have tried it now this way:


file.gh (10.6 KB)

Unfortunately, there is an error. How can this be fixed?

Line Topology is just Topology so connection between objects number (integers). So you’ll have to make first the extraction of points that are alone, then make a recursion until there is no more “alone” line. Not easy but if you don’t try a bit harder you will never learn.

1 Like

Thank you. Do you have an idea how I can get the knowledge to do this? Are the tutorials about this topic, is there a book I could read? Just out from nothing, I don’t know with what I could start.

Hard to say if there are book . But it is quite a simple algorithm but it will be hard if you dont know how to make a c# python or whatever. There could be a way with Grasshopper only. Or a plugin …

I am not good to give advice for learning as I had time and I learned by answering questions.

1 Like

Okay. If you ever find something similar or a tutorial, I would be very happy if you could share it here. Thank you for your answers!

Hello
it is done in Grasshopper only an using recursion with Anemone.
The logic is to have the index of point that that a connectivity lower or equal to the number specified (1 in your case). Then I have the index of points that are not good are transformed to points, like the index that represent the line. Closest Point is used to know which lines have a points that has connectivity lower or equal to the number specified (I used that because I was not able to use sets !!!). If points have a distance lower to 0.1 then it means that the lines is an end, so we don’t use it.

It is quite generic. You put your lines and it outputs a graph without dead end. If you don’t want lines you put 1 in the panel

If you put 2


remove alone lines in a network of lines.gh (16.5 KB)

2 Likes

And a version with Set, i I have to transform data to int (because series output double! :sweat_smile:), it works and it is a bit more simple.
So you have the index of points that are alone and index of points that are used for a line, if a line uses one a the index, there is an intersection with the set so its lenght is > 0. Then just choose the good to output from dispatch.

remove alone lines in a network of lines with sets.gh (15.6 KB)

2 Likes

Thank you so much! I have tried to let it run, but have some issues. I think Anemone doesn’t work the way it should on macOS?

Make a cluster of what is inside anemone component and then duplicate the cluster and put them in series. For what you do 2 or 3 iterations are enough.

Thanks. I tried to do it, but got totally confused. Here is my file:
test.gh (18.2 KB)

I get sooo many errors :neutral_face:

hello
it seems you are not doing a lot of effort. I recommend you try to understand what are doing the components. Without that, it seems a worthless effort for me to help you.
You used a Dispatch component without feeding the list "L"of data that has to be dispatched
image
Also the output is B not A !!

here a file with the cluster
test (2).gh (14.9 KB)

Add the necessary clusters in order to get suppress all the dead ends!!!

Hello! I think I am just not talented. But now it works exactly the way I wished. I admire you for your expertise, thank you very, very much!