Monday, May 13, 2013

Creating symbols in Omnigraffle

Before Omnigraffle, I used Fireworks for all of my UX wire-framing. I don't miss its clunkiness and its constant crashing. But I do miss its symbols.

A symbol in Fireworks (as in Illustrator) is an object that can have multiple instances in your document. If you change the symbol, every instance of it changes. 

You can see how this would be useful for wire-framing. You might have dozens of instances of, say, a symbol containing an avatar and name that represents a member in a social network:



If you copied an Omnigraffle group for making these member representations, you'd have to update every such group in your document if you now needed to add, say, the member's birthdate.

Creating "symbols" in OmniGraffle


There's a trick in Omnigraffle that lets you accomplish this very thing. (I found this trick on a blog entry by Todd Moy on Viget: he lists some excellent Omnigraffle tips there.) 

In OmniGraffle, you can copy a set of objects "as PDF" (Edit > Copy As > PDF) and then paste that PDF object. And at any time, you can double-click that object to edit the copied objects. Nothing is lost upon this conversion to PDF. After pasting the PDF copy, I always just delete the original.

Double-clicking a PDF object brings up a new OmniGraffle window that contains the copied OmniGraffle objects, and this window links back to the PDF instance you double-clicked:



Choosing File > Save in this link-back window after making your edits updates that PDF object.

Here's the powerful part: editing and then saving any copy that you've made of this PDF object updates all other copies of that PDF object in your document. You edit one, and all copies update.

Gotchas


There are a few things you need to be aware of. 

1. This behavior does not extend to other documents. Because of this, don't put a PDF object in a stencil, because when you drag that object from the stencil into your document, it will be seen as a completely separate object, and not just an instance containing same set of objects. Instead use Copy/Paste or Duplicate within the document at hand.
2. The system does not catalog these objects, so once you delete the last instance, it's gone.
3. If you resize the instance, the objects within it don't resize, but because of the resizing, they are shown as stretched or shrunk. This makes it nearly impossible to make pixel-accurate redlines, as the spacing between objects is not accurately measurable - nor are the font sizes.

To overcome (2) above, I make a layer on the last page of my document (where I put my revisions list), and put a copy of each PDF object on that layer. I also make the layer non-printing, just in case I forget to hide it before exporting to a PDF document.

4 comments:

  1. thanks for this post! this certainly is a super obscure way of hiding the functionality.

    do you know of a way to get the PDF object back, when there are no instances of that PDF object on the canvas? fireworks has the symbols properties, but omnigraffle doesn't seem to have anything like that.

    ReplyDelete
  2. Hello!

    You'd have to have an instance of it somewhere in the document - e.g., on another canvas. Then you can just copy it and paste it. Unfortunately, OG doesn't catalog these items any differently from normal objects. And if you import it from, say, a stencil, then I believe that OG will see these as completely different objects - i.e., not just instances of the same object - since it was imported into to document rather than copied.

    What you might want to do is make a layer on - say - your first canvas that you use as a repository for all of these PDF objects. Then you can hide the layer when you deliver (or make it a non-printing layer if you are printing it).

    I hope that the folks at OmniGroup figure out that this is a huge use case.

    In the meantime, I think a post on OmniGraffle for Fireworks users might be a good idea. I came from Fireworks, too, but I abandoned it when Adobe wanted to charge me for a new version with no new features, just bug fixes.

    ReplyDelete
  3. Also - non-printing layers don't show up in exported PDFs, unless you turn that option on. To make a layer non-printing, click the icon between the layer-visibility icon and the layer-lock icon.

    ReplyDelete
  4. Thanks so much for this post! I come from a Fireworks/Illustrator/Flash background, so not having symbols is really rough...

    It's weird that Omni has buried this functionality.... It's *almost* an actual implementation of Symbols, but not quite. They're such a quirky company...

    ReplyDelete