There are times that using Explicit Normals in Max is great. There are other times, not so great. I propose some new functions to convert Explicit Normals into Smoothing Groups (in essence, the reverse of adding an Edit Normals modifier onto a mesh to see the current explicit normal based off of smoothing groups).
meshops.setSGfromNormals <trimesh|mesh|editable_mesh>mesh facelist:<bitarray defaults to #all> clearExplicit:<Boolean true> skipBorders:<Boolean true>
polyop.setSGfromNormals <node editable_poly>mesh facelist:<bitarray defaults to #all> clearExplicit:<Boolean true> skipBorders:<Boolean true>
These methods should calculate the smoothing groups into the mesh by finding all co-located vertices with matching normal vectors and adding them to the same smoothing groups. The functions should be smart enough to consolidate smoothing groups among adjacent smoothed faces/polygons.
facelist: Should limit results to the passed bitarray. If no faces passed, use all faces.
clearExplicit: Should remove the explicit normals on the faces that acquired smoothing groups* (see next option).
skipBorders: When true, explicit normals are kept on the border vertices when clearExplicit it turned on.