I made an update to NGon plugin that allows to get these values directly for polygonal meshes including triangles, quads, hexagons and etc:

Be aware that for open meshes, the orientation of mesh matters.

Sometimes you need this information sometimes not.

If you do not need it then you can take modulus of 180.

I updated current version of NGon (3.0.0) that includes this property:

Example File

Sample.gh (19.6 KB)

This is with your file:

For sure this angle notation makes sense when polygons are planar or at least close to planar.

If someone is curious about this problem, this is the source code, where plane0 and plane1 represents two adjacent polygon planes:

```
public static double AngleBetweenTwoFaces(Plane plane0, Plane plane1, Point3d edgeMiddlePoint) {
if (plane0.ZAxis.IsParallelTo(plane1.ZAxis, Rhino.RhinoDoc.ActiveDoc.ModelAbsoluteTolerance) == -1)
return 0;
if (plane0.ZAxis.IsParallelTo(plane1.ZAxis, Rhino.RhinoDoc.ActiveDoc.ModelAbsoluteTolerance) == 1)
return 180;
double num = Math.PI - Vector3d.VectorAngle(plane0.ZAxis, plane1.ZAxis, new Plane(edgeMiddlePoint, plane0.ZAxis, plane1.ZAxis));
//Solve concave / convex cases
Vector3d v = plane1.Origin - plane0.Origin;
double angleBetweenMidPoints = Vector3d.VectorAngle(plane0.ZAxis, v, new Plane(edgeMiddlePoint, plane0.ZAxis, v));
if (angleBetweenMidPoints > Math.PI * 0.5)
num = Math.PI * 2 - num;
num = Math.Round(Rhino.RhinoMath.ToDegrees(num), 3);
return num;
}
```