I like the alignment of text to segments of polylines, but I find it confusing that you have to pick the other object first. You would expect to pick the text first and then the object to align to.
(A selectionset with (M)texts to align would even be better.
)
To answer your question:
You can add:
((= obj_typ "AcDbArc") ; This is an arc
[insert your code here]
)
It takes some maths to get the angle:
(cdr (assoc 50 (entget (car ent)))); = center point
(cdr (assoc 50 (entget (car ent)))); = start angle
(cdr (assoc 51 (entget (car ent)))); = end angle
You now can find the endpoints of the arc and the angle between those points.
So perhaps it's easier to use your methode: make a polyline of the arc and explode it after you get the angle.