there are other ways to do it, storing the edge normals in an array would have been a better way to go but it was really just a cut and paste script I had code that worked that way. In general keeping normals in a mapping channels work well with scripting as you don't need the object selected and to be in the Modify Panel…
Takes a long time to process, but is totally worth the wait. Does exactly what I need. Thank you! One question though. Can understand what code does in general, but not why. Why does it use mapping channel?