Builtin Library
README.md
group
Named selections over a mesh's points, vertices, edges or faces, for other ops to act on.
The definitions live in proc.ops.groups; this pack is what puts them
in the op registry, so procgen.searchNodes("", { pack = "group" }) lists the family
and procgen.describeNode("op.<id>") describes any one of them.
Ops
group.create— Make a named group from a mask Field (or an existing attribute column) over an element classgroup.by_normal— Group the elements whose normal is withinangledegrees ofdirection, the limit included (at 90 degrees a face exactly perpendicular to the direction joins) — the top faces, the ones facing a camera, the overhangsgroup.by_bounds— Group the elements inside a region — a box ofsizeaboutcenter, a sphere ofradiusabout it, or the half-space on theaxisside of the plane through itgroup.by_random— Group a deterministic random subset: each element joins when its own draw falls belowfractiongroup.by_island— Group whole connected components — the islandstopology.islandslabels, so an island id means the same shell to every op that reads onegroup.combine— Set algebra between two groups of the same class: union, intersect, subtract (a without b), or xorgroup.invert— Group every element of the class that the group named bygroupleaves outgroup.expand— Grow the group named bygroupoutward byringsadjacency rings — every ring adds the elements touching the selectiongroup.shrink— Erode the group named bygroupinward byringsadjacency rings — every ring drops the members that touch an element outside the selectiongroup.list— Every group the domain carries → Data:count, andgroups= { name, class, members, elements, fraction } sorted by class then namegroup.info— One group in detail → Data: name, class, members, elements, fraction, and (withlist_members) the member element idsgroup.remove— Drop a group from the domain — its 0/1 column and its index entry together, sogroup.listreports what the domain carries