@Casey throw this in a prim wrangle (this code snippet group edges based on the interior angle of the two adjacent prims):
“`c vector edge(int h){ return vector(point(0, “P”, hedge_dstpoint(0, h))) – vector(point(0, “P”, hedge_srcpoint(0, h))); }
int h = primhedge(0, @primnum); int test = h; do{ if(hedge_equivcount(0, h) > 1){ vector e = edge(h) * (hedge_primary(0,h) ? 1 : -1); int prim1 = hedge_prim(0, h); int prim2 = hedge_prim(0, hedge_nextequiv(0, h)); vector n1 = prim(0, “N”, prim1); vector n2 = prim(0, “N”, prim2); matrix3 m = dihedral(e, set(0,0, 1)); //rotate e to be face up n1 *= m; n2 *= m; n1.z *= 0; //ensure our normal is 2d now, and normalize, probably overkill but whatever n2.z *= 0; n1 = normalize(n1); n2 = normalize(n2); float ang = atan2(n2.y*n1.x – n2.x*n1.y, n2.x*n1.x + n2.y*n1.y); //angle between vectors in 2d ang += M_PI; //interior angle, from 0-2PI if(ang <= radians(ch("interior_angle_maximum"))){ //our test is in degrees, typically we want to find interior angles lower than 100 degrees? setedgegroup(0, "peaks", hedge_srcpoint(0, h), hedge_dstpoint(0, h), 1); } } h = hedge_next(0, h); }while(h != test); ``` and then click the add parms button thing on the wrangle, for the geo you sent, it seems like an angle threshold of 100 degrees seems to work 🙂
oh and you need to add prim normals with a normal sop