I haven't written about the API capabilities of the DWF Viewer, as yet, but this is a technology I really enjoy working with. The latest release (version 7), especially, has some really cool API capabilities: while you've been able to respond to selection events in 2D views for some time, it's now also possible to manipulate 3D views, selecting which objects should be displayed.
If you throw in the capabilities of AutoCAD's DWF Metadata API (which allows you to add in custom metadata into both 2D and 3D DWF sheets, as they're being published) you really get some interesting possibilities for applications working on "downstream" data.
A quick aside - if you're thinking of embedding the DWF Viewer in your application, be sure to check out the API documentation.
So here's what I've been playing around with - primarily intended to be part of the Component Technologies webcast material I mentioned in a post a few weeks ago.
The idea is that during the publishing of your model from AutoCAD, you add some metadata to objects (in this case I'm using 3D solids) as they get published both into 2D and 3D sheets. The data being published in this sample is simple enough - the handle of the object and the material applied to it. Having this metadata in the DWF will allow us to hook into selection events in the 2D view and create a connection between what's selected in 2D and displayed in 3D.
Next we create a web app in HTML that embeds the viewer twice - once to display the 2D sheet, which is our "main" view, and a second time to show a small window in the corner, which will show a 3D view of the model (or a subset of the model).
And here's where it gets cool: you can define JavaScript functions that respond to events in the 2D view, and dynamically manipulate the 3D view as you hover around in the 2D view. Whichever object you're hovering over in the 2D view gets isolated and displayed in 3D. You can move across and orbit on the 3D view before moving back to hover around the model, looking at different objects.
Here's a quick screenshot of the app as it stands right now:
The code is certainly still a "work-in-progress", there are still some quirks I'm still trying to iron out (it even occasionally freezes my machine - although I haven't yet determined whether that is due to this app or something else). All this to say - please save anything you're working on before launching the app, if indeed you feel you must take a look... :-)