Separating Multipipe SubD Based On Connectivity

Hello everyone, I have a simple question regarding meshes and subd objects.

I am trying to connect a group of joint and disjoint curves with multipipe, then convert them into meshes. The component works just fine event with thousands of curves, but I am having a problem separating the subd and meshes. What I need is to have separate shapes based on the intersection of the curves.
So for the curves seen in the image, I would like to have 8 mesh, but multipipe creates 1 subd object for all of them. So the question is, how can I separate subd objects or meshes based on connectivity?



Hope it was clear…

multipipe.gh (12.1 KB) multipipe.3dm (106.7 KB)

Hi @pelok36084
Here’s a little script which takes a line network and separates it into nodes and struts.
It references some of the same graph functions that the MultiPipe component uses, so you’ll need to set the assembly reference for Kangaroo2Component.gha when opening it.
This will typically be in
C:\Program Files\Rhino 7\Plug-ins\Grasshopper\Components

It takes a value as input for how far away from the point you want the nodes to extend.
It would be possible to also output the connectivity information from this graph if needed.
multipipe_separate_nodes.gh (10.5 KB)

Hi Daniel, thanks for the reply.

I was achieving a similar result with another workflow, but this doesn’t solve my issue. What I need is to have multiple subd geometries based on the connectivity of curves. So if the curves do not connect, I need them to be separate subd geometry.


So in this file, I need 15 subd geometries, but multipipe gives me 1 subD with 136 faces.
I was thinking, maybe it can be possible by grouping the curves that intersect with each other, though I couldn’t manage to do this yet…
multipipe_segmentation.gh (23.6 KB)

It would be possible to group them from the script, or another easy way to separate them would be to use the Disjoint Mesh component.

Thanks, Daniel, that did it!!

This thread is super useful for fabrication. Thanks.

I have a follow up question about splitting a multipipe up by chopping up the nodes themselves that I’ll post in another thread.

hi @DanielPiker when i use it c # component this error

?


Do you know the cause -My Version is Rhino7 Sr11
In the previous version of Rhino7 this error was not and the component was properly

Ah yes, the namespace was changed in a recent version.
So scripts like this one which reference it need to use eg
‘MultiPipeMethods.HalfEdgeGraph’
instead of
‘MultiPipe.HalfEdgeGraph’

Here’s an updated version of the script from above with this changed:
multipipe_separate_nodes.gh (11.4 KB)

hi @DanielPiker , thanks for this.

Any thoughts one how differentiate between the joints as to identify unique ones. Converting to mesh, then disjoint and getting vertex count works to some degree, but in the case as illustrated below, when joints share same line count, but orientation is different (the blue ones), it’s not that obvious how to approach this. In my particular case i have similar joints spatially orientated differently, so doing some mesh normal vectors operations or bounding box height or 3d convex hull as additional AND logic to get a ‘unique id’ didn’t do the trick.
For context, looking for a way to make scaffolding , and for this i need to identify the type of joints and their counts

make_joints.gh (17.1 KB)