I have worked with blocks placed in 3D space.
The simple one is the rotation in xy plan,- when rotatet around the y-axis. You can calculate it from the .normal like this.
Private Function xyRotation(objAcad As AcadObject) As Double
Dim ZeroP(0 To 2) As Double
ZeroP(0) = 0#
ZeroP(1) = 0#
ZeroP(2) = 0#
xyRotation = ThisDrawing.Utility.AngleFromXAxis(ZeroP, objAcad.Normal)
End Function
With the rotation around the y-axisI have some difficulty. Right now I calculate it via good old Phytagoras, the normal forms an triangle equal to the one that is formed by the WCS plan and the xdirection, but this only works if the object is not rotated around the x axis, I think that you can read the rotation in space from the .rotation property but I have to figure out how.