Q:

Converting Visio diagram to GIS layer for ArcGIS Desktop?

I have a office floorplan that is a standard Visio drawing file (*.VSD) that I would like to convert into a GIS feature class (shapefile, GDB, PostGIS, or any other applicable format, it doesn't matter much).  
A couple of options occurred to me, but I am wondering if anyone know of any other tools/techniques for converting a Visio file to a feature layer?
My ideas:

Simply load the VSD file into a Desktop GIS software and heads-up digitize the features (walls, doors, cubical's, network ports, etc)
Convert the Visio to Raster, then using ArcScan to help automate the generation of feature linework.

Another idea I found in the question: Transforming Visio polygon to shapefile? was to:

"export Visio Shapes (file, save as) to a .dxf (AutoCAD exchange file)", which seems like it might be the easiest method I have found so far.

My preference would be to use ArcGIS 10.0 tools to accomplish this task, but am open to other possibilities.

A:

After doing a few tests, I came up with a solution that seems to work pretty well.  I was fortunate that the Visio user put all of the objects in "Visio layers", so I could use a Definition Query to extract the pieces I wanted.

Export Visio to DXF (as noted here: Transforming Visio polygon to shapefile?)
I then created a model that:
a) Starts with the Polygon layer of the DXF.  In my case the "building walls" lines came in as double-line gaps.
b) Used "Make Feature Layer" to assign a definition query to the polygon layer.  The Definition Query extracted only the features in the "Building" Visio layer.
c) Dissolved the DXF Polygon layer (to make nice clean "walls")
d) Used "Feature to Polygon" to generate the "office" footprints.
e) Saved the final results in an Esri Geodatabase (but it could be any format, really).
I chose to convert the DXF Annotation to points in a separate process (which represented employees, network jacks, etc).  That way when employees change office locations, all I have to do is drag their "point" to the new office location and update the point attributes (if needed).  In my case, multiple employees share an office space, so attaching the data to the polygon was more trouble that it was worth.  I also found that the "anchor points" of the annotation were off to the upper left of the text, so I would not be able to automatically assign the label properties to the Polygons, anyway, without some manual editing, or at minimum offseting all of the points a certain distance to get them back to where they belong.

Alternatively, and depending on your need and the quality of your data, if there is DXF annotation that has anchor points within the "office walls", you could even use the "Label Features" option in the "Feature to Polygon" tool to automatically apply the annotation label data to the individual polygons.
The end result came out looking something like this, where the offices (and walls, and hallways) are polygons, and the employees are points.  All have attributes associated with them (I've just turned off the labels for privacy):

A:

One thing you may/want to do is to create the vectors with Z information, so that each polygon has it's height per floor, allowing for 3D floor stacking

