I see this thread is quite old and I don't know that the da module existed at the time, but here's how you can currently tackle this problem with Python, if you're so inclined:

>>> lines = 'lines_dw'
... sr = arcpy.Describe(lines).spatialReference
... points = {}
... PID = 0
... with arcpy.da.SearchCursor(lines,'SHAPE@',spatial_reference=sr) as cursor:
... for row in cursor:
... for part in row[0]:
... for i in range(len(part)):
... if not part*.equals(row[0].lastPoint):*
... PID += 1
... dx = part*.X - part[i+1].X*
... dy = part*.Y - part[i+1].Y*
... if dx > 0 and dy >= 0:
... angle = math.fabs(math.degrees(math.atan(dx/dy))) + 180
... if dx <= 0 and dy > 0:
... angle = math.fabs(math.degrees(math.atan(dy/dx))) + 90
... if dx >= 0 and dy < 0:
... angle = math.fabs(math.degrees(math.atan(dy/dx))) + 270
... if dx < 0 and dy <= 0:
... angle = math.degrees(math.atan(dx/dy))
... points[PID] = [part*,angle]*
... points_list = [arcpy.PointGeometry(v[0]) for k,v in points.iteritems()]
... arcpy.CopyFeatures_management(points_list,r'in_memory\points')
... arcpy.AddField_management('points','ANGLE',"DOUBLE")
... with arcpy.da.UpdateCursor("points",['OID@','ANGLE']) as cursor:
... for row in cursor:
... row[1] = points[row[0]][1]
... cursor.updateRow(row)