# Ripping vertices with more than two connected edges

I'm trying to find a way to rip all vertices with more than two connected edges on a mesh, then move the resulting verts away from each other slightly afterwards. Is there a way to do this in geometry nodes or Python?

Example of the verts I'm trying to select and rip. Verts with more than two connected edges.

The result I'm looking to create. Here all the verts are ripped and moved a small distance away from each other to separate them.

In GN, it can be done as follows:

• Mark vertices with more than 2 edges (Capture Boolean)
• Rip all vertices
• After ripping, move marked vertices towards centres of their edges
• Weld unmarked vertices

thus:

I know, no one asked, but what if some vertices were already split and you wanted to keep it this way? You can do so by capturing the indices before splitting (so after splitting the new vertices remember the vertex they were cloned from), move those vertices to <index, index, index> xyz position, only then merge by distance, and move them back to their original position:

This also solves another quandary, which is what if the scale of your model is so small (I don't know, a model of a processor or a biological cell), and the $$0.00001$$ m distance is actually too much? Obviously the easiest solution is to not work in the real scale (or decrease this merging distance further), but since in my solution the vertices are spaced evenly at $$\sqrt 3$$ (Vector((1,1,1)).length) distance, a distance as big as $$1.7$$ will work. Notice how I use a whole meter in the merging. Perhaps this also makes the process faster, with less BVHTree cells? I don't know.

Using Robin Betts' setup, but with one vertex already ripped:

The Scale Elements is a handicapped version of the actual logic the OP needed, but the correct one is there in the Robin's answer.