In the Rhino acceptation of the term, there seems to be no way to explode a mesh in GH, meaning “separate subsets of welded faces into distinct meshes”…
I find it confusing that GH gives the same name to a tool which explodes a mesh in its constituent faces, even if it makes more intuitive sense as GH phrases it.
Naming in GH is dreadful. Poorly chosen words, words which are no longer correct after some aspect changed, inconsistencies… we hope to do a better job with GH2, although certain words are probably too cemented to be changed now, like “parameters”.
At the time of naming it may not have been very “poor” at all, but as you say, after some time and additional functionality, context can change and so also names may have to change in order to better differentiate more specific functionality.
There will always be several “generations” of code and namings in a system which is developed over time. It only reflects the fact that no matter who you are, you will always gain better and deeper insight into a problem domain as you dig deeper into the problem domain.
New aliases may or may not be a solution for names that are hard to get rid of entirely
Meh, a lot of it is simply my fault. Should have thought longer and harder and when naming things. I’m rather chuffed with the new nomenclature for trees I came up with, but that’s mostly because all the words are four letters long, which makes for neater code; tree (now called datatree or structure), path, twig (now called branch), item, meta, pair (item+meta), leaf (item data + locus within tree) and rule.
Sadly I haven’t been able to find good four-letter words for locus (index within tree) and coverage a range of adjacent loci.
Most of these words will be api only in all likelihood, not spilling over into the user interface.
I agree, this seems like a function that should be native. In the mean time, if you are asking for how to do it, there are a few alternatives that provide some additional “mesh explode” functionality.
Mesh+ and UTO’s Mesh edit tools have explode mesh components.
There are a few examples online that describe how to do it with a scripting compnent, (various flavors out there).
Here’s a python example of one we use. (it’s not better than any of the other plug-ins out there, we just found ourselves using it quite a abit and wrapped it into our studio’s tool set).
# Explode MeshFaces into individual meshes
# By Chris Hanley
# chanley@theolinstudio.com
# This file is part of OTools developed by OLIN digital design group at OLIN partnership, llc
# Licenesed under a Creative Commons Attribution-ShareAlike 3.0 Unported License.
"""
Explode Mesh Faces
-
Provided by OTools ver xx.xx.xx
Inputs:
M: Meshes to Explode
Outputs:
F: Individual Mesh faces as Meshes
"""
ghenv.Component.Name = "OTools_ExplodeMeshFaces"
ghenv.Component.NickName = 'O_ExplodeMesh'
ghenv.Component.Category = "OTools"
ghenv.Component.SubCategory = "5.5 | Mesh"
try: ghenv.Component.AdditionalHelpFromDocStrings = "2"
except: pass
import Rhino
newMeshes = [] #empty list to hold exploded meshes
def OExplode():
for i in range(M.Faces.Count): # for each face in M, do something
newmesh = Rhino.Geometry.Mesh() #create mesh object for each face
newmesh.Vertices.Add(M.Vertices[M.Faces[i].A])
newmesh.Vertices.Add(M.Vertices[M.Faces[i].B])
newmesh.Vertices.Add(M.Vertices[M.Faces[i].C])
if(M.Faces[i].IsQuad):
newmesh.Vertices.Add(M.Vertices[M.Faces[i].D])
if(M.Faces[i].IsTriangle):
newmesh.Faces.AddFace(0, 1, 2)
if(M.Faces[i].IsQuad):
newmesh.Faces.AddFace(0, 1, 2, 3)
newMeshes.append(newmesh)
if M:
OExplode()
F = newMeshes
else:
pass