Converting Visio Stencils to OmniGraffle

xrayspx's picture

Someday, we'll live in The Future, I swear it.

Last year I bought OmniGraffle 4 Pro, I really, really like that app, and it makes using Visio seem like self torture. Now only if the formats were open all the way around...

The thing that has held me back with OmniGraffle is the lack of stencils. Graffletopia does a great job, but I find myself using the Apple or Dell (mixed with the Sun, Netapp, etc) stencils that aren't really representative of my hardware, and I feel that it just doesn't seem that professional when I hand my boss a network or rack diagram that has all this disparate hardware that doesn't match anything we actually own. I have a lot of Visio stencils, some of which DO work in Omnigraffle using their preferred import method: Make a new drawing in Visio, drop your objects on there, save it as an xml drawing, and import that into OmniGraffle. The problem is that for a huge percentage of stencil sets, you get an error that you can't load the EMF data and get a grey rectangle or munged object.

Many people have been recommending blowing the objects way up in Visio and using a screenshot, or exporting the document from Visio as a PNG or some such. This will get you your objects, but they'll be raster images and you will lose both detail and the ability to scale them. What makes Visio and Omnigraffle (and PDFs, and Illustrator) work so well is that your objects are vector images and are scalable in all directions while maintaining quality.

To import those objects which don't convert properly, I've started using the following method, which isn't perfect, but the objects do come across, and you don't have to rasterize them.

I am using:
Visio 2002 in a Windows XP VM
Illustrator CS3
Omnigraffle 5 Pro

Go into Visio, create a document and populate it with some of the objects you want to convert. I've found that if I really load this up, it doesn't work so well. Save this document as .emf or .wmf (enhanced metafile or windows metafile). Oddly I've found that CS3 doesn't like the .ai files saved out from Visio 2002. YMMV. This would obviously be the preferred way to move files around, assuming it works.

Open the saved file in Illustrator on the Mac. You may have to ungroup/regroup your object and sub-objects. When you're ready, cut and paste your object from Illustrator into Omnigraffle using CMD-C and CMD-V. Dragging them from one app to the other didn't seem to work exactly as I would have expected.

Now, in Omnigraffle, click the gear icon in the Stencils panel and select "new stencil". This will open up a canvas that you can copy your new object into after whatever tweaking you want to do. In Omnigraffle 4, this is done with the Stencils menu instead.

There should be simpler ways to do this, but I haven't found any that produce results of the same quality with as few steps. I've found that you can use OpenOffice or NeoOffice to open the emf/wmf files, and then follow the same steps to import the objects, but it seems the NeoOffice rasterizes the files, so while it does work, you lose some detail. I'm also looking for other methods. Inkscape does a great job of opening and editing PDF documents, but doesn't seem to save in any vector format that can be loaded by Omnigraffle (mainly saves in SVG variants). Omnigraffle claims to be able to open PDFs, but I haven't had good luck with that in the Real World.

If I find an easier way to get quality stencils from Visio into Omni, I will update the page. In either case, I'll add screenshots soon enough.

I also wouldn't blindly upload any stencils you create to Graffletopia without running by them or the original stencil distributor, as that would almost certainly put you and Graffletopia both in hot legal water.