Hello David:
Revit has a variety of programming interfaces: Dynamo (which can include Python nodes), Python via Revit Python Shell, compiled macros, and of course compiled add-ins. After bumping around a bit, I have sortof settled on Python & Revit Python Shell as it is an interpreted language and I have immediate access to Revit model. Unfortunately, RPS is not an environment like visualLisp - no real debugging support.
Note that I can drive Autocad from Revit but I cannot drive Revit from Autocad. So from Revit, I use Autocad's ActiveX interface to get at a DWG file.
Attach is a sample file with some Mtext. This is just a sample from a random file.