OmniGraffle + Powerpoint = Editable Individual Objects

What is heavens name is an “object paste” ???

  • If you want the graphic, copy the graphic.

  • If you want the Shapes and Lines as separate object, copy them as separate objects.

  1. Ungroup your graphic, keeping in mind the “elements” that you want to access in PowerPoint.
  2. In OG, use CopyAsPDF.
  3. In PP, paste.

Cheers

I think @matgtd is looking for the modern equivalent of OLE embedding. I think the excellent python-pptx package is about to support that (based on conversations on its GitHub Issues page). But I wouldn’t count on it being released any time soon.

Personally, I export from OmniGraffle as a PNG file in as high resolution as I can stand and then import into PowerPoint. (I’m embedding using my own md2pptx open source program, which uses python-pptx. I wonder if this provides the automation @matgtd was hoping for.)

@GraffleGuru
Based on the popup (right click on shape) from omnigraffle, it states copy “object style”. The shape that I placed in the canvas is an object. An object paste would be to paste those individuals objects into powerpoint. Right they paste together as a image.

Copying them individually is a non-starter.

  • copy and then assemble and then size etc… counter productive.
  • Ungroup your graphic, keeping in mind the “elements” that you want to access in PowerPoint.
  • In OG, use CopyAsPDF.
  • In PP, paste.

This still results in the same as the copy and paste. An Image that you can’t ungroup the elements.

@MartinPacker

OLE embedding is possible on the windows environment but not on the Mac since there is no native Visio. The problem I still think is that this couldn’t be animated individually. You would have to use the embedded interface. Ideally, I’d like the ability to copy and paste my omnigraffle flowchart into PP and able to ungroup it so that I can manipulate the image elements

@MartinPacker & @GraffleGuru, the question is how can I copy what I have created in oMni graffle and bring it into PP, select individual elements of the overall?

Thanks for the explanation.

So you want each separate Shape; Line; etc to be (a) copied from OG in one act, and (b) pasted into PP, as a separate objects. That PP will have to understand as separate objects. That PP will then allow you to manipulate.

Perhaps we could go back to this:

Why ?

Why do all that charting in a drawing tool, and then export it to a presentation tool, and then manipulate the drawn objects in the presentation tool ?

Why not present directly from the drawing tool that has the drawn objects, from where the manipulation is easy ?

Cheers
Derek

Omnigraffle can build a flow chart faster, has stencils, shapes, magnets, text between lines and other things that makes it exponentially faster to use OG than PP. I can move elements with easy and rearranging things quickly.

It’s like saying why use a computer (OG) when you have a typewriter (PP for flowchart)?

I think we are losing sight of the question and talking theory/usability. Just looking for a solution for my objective since the user is the best advocate for their needs and desires. Since they have the full depth and scope of the task itself.

The question still remains is there in any way you could take a OG flowchart and move it into PP so you can manipulate the flowchart at it’s individual elements?

I know all that, I agree.

Perhaps you misunderstand me. I am trying to help you. I use OG heavily. I have hundreds of diagrams, including flowcharts and data models and network diagrams, that not only exist in a final form (eg. 1 page PDF), but also have to be presented (eg. in 10 progressive increments; eg. “move objects around”). I do not do that presentation in PP or Keynote, I do that presentation in OG.

If you are fixed on the way you do things, I cannot help.

If you are interested in other ways of doing things (but getting the same result on the big screen), please see if these ideas help you at all:

  1. Increments
  • I draw the entire diagram with the final result in mind, on a single Canvas. I use Layers to separate the increments. Some objects are common, so they are placed on SharedLayers.
    • (Horrible compared to OG4, but hey, that is what we have.)
  • Then by turning selected Layers Off/On, I create a progression; a series of increments. (It is still a single Canvas.)
  • For each increment, export as PDF.
  • Repeat.
  • For the final intense single-page lecture note, turn On all layers, and export as PDF.
  • Example: here are the first 5 increments of 18 increments, as single PDFs, all created from a single diagram on a single Canvas.
  1. Mobile Elements
  • Pretty much the same as [1], but don’t create the incremental PDFs, only the final PDF
  • Present the OG document.
  • Present increments simply by starting with all Layers turned off, and by turning Layers On for each increment.
  • Move elements around, as you explain things
  • For highlighting text or an object, I use a cursor, which is a rectangle with a 4pt blue Stroke, and a white 0% Fill.
  • Yes, this means that your OG doc is set up as a Template, it contains everything that you would put in the PP doc.

I don’t understand what you mean in your computer::typewriter analogy.

(The typewriter is definitely better for some tasks, and the computer definitely better for other tasks.)

Theory, no. Usability, yes. You may be stuck in Maslow’s Law of the Instrument.

I am saying, use the right tool for the job. If the presentation needs to be given in increments, or you need to “move separate objects around”, use OG. I am not suggesting that it is a great presentation tool, or that it is equivalent to PP/Keynote.

Sorry. The answer is no. And I do not see how it can be done within the current limits of OG and PP. Eg. there would be issues re lines joined to objects; shadows; etc. Ooo la la.

Cheers

One of the reasons for using PowerPoint is the need to exchange with colleagues. (That’s my case, too: Getting colleagues to write in Markdown - my preferred tool - isn’t usually possible so I have to fit in with what they’re using. My guess is that’s the constraint here.)

1 Like

Great point.

Usability

  • I have the dubious luxury that I am a consultant, not really part of a team, even though I may head a customer team for the duration of a project. Even interim docs (ie. in the middle of a project, containing far less content than the final), which are subject to ongoing changes, are mine; mine; mine. As a matter of (a) a visible delivery, as well as (b) a matter of pride, I don’t want anyone writing on them.

  • The whole notion of a shared document sucks dead bears. I did not allow it in the old days (shared doc on an internal file server) and I definitely do not allow it nowadays (Google Docs; “internal” cloud file server; etc). Massive waste of time.

    • The document did not create itself, focussing on the doc is an error.

    • Focus on the author, who created the doc. Tell him the changes you want.

    • The cloud concept is broken, major corps are moving away from it, back to domestic servers. I never moved onto it, so there is nothing to reverse.

    • Even in a “shared doc” context, if you do not have the rule that one designated person owns the doc, you will have grief, that is avoidable.

  • Anyone and everyone can comment on my docs. Just mark up the PDF and send it back.

  • How ? Any way you want.

    • I receive docs made in Visio, that have my PDF imported, and then whatever the author wishes to comment; request-for-change; question; etc, on top of that.

    • one mathematician, who hates diagrams and loves text, sends me a text file with cryptic notes. He refers to my § headings (Legal numbering, pre-planned, absolutely necessary)

    • several just print the PDF and mark it up with a pen

      • not possible quite that way, if the “team” is not a team, but a bunch that is scattered … just scan the marked up page
    • et cetera

  • I do export final diagrams to Visio, if the customer really wants it. But I do not export interim or incremental docs (described above) in Visio because the back-and-forth is very messy. Those who are stuck to Visio are free to use my PDFs as a base, and add content.

Cheers

1 Like

Our team (of consultants) is small - and a certain amount of co-authoring is part of the game. And we exchange with others occasionally. When we do we usually create PDFs - to avoid someone tampering with our message (which I know isn’t tamper proof). But sometimes we want them to embed in a larger thing - and possibly re-style. Then PowerPoint is the thing.

On the “one author, multiple editors” thing - that is when I sometimes get to insist it’s built in Markdown. The one downside is that Markdown can’t create every layout. (Part of the fun for me as the developer of md2pptx is inventing ways to express stuff with Markdown.)

But we digress, don’t we… :-)

1 Like

We did !

If it is genuine one author, multiple editors, the best option, by a long shot, is Pages/Word. Full commentary plus corrections, waiting for the one author to approve/reject. Think PhD or Masters thesis, with lots of OG graphics, as it progresses over the period of a year.

  • For interim versions, we place the graphics on the left page, all the text pertaining to the graphic on the right page. Easy as.

  • For the final and ready-to-be-final versions, move the graphics and insert figure titles (for the Table of Contents to pick up). Easy as.

Cheers

1 Like

Another consideration I have to deal with is that I make process flow diagrams and database models and flowcharts in OmniGraffle when I can, but I work at a company that’s all Microsoft. Yes, I have Visio — which is why I use OG.

Sometimes I export to Visio. Last time I tried, the layers didn’t export correctly.
Sometimes I take screenshots or cut & paste objects into PPT.

I never investigated the idea of using AppleScript to convert my OG objects to Keynote slides then export to PPT. My intuition says there are things that won’t have a parallel … but maybe I’m too pessimistic.

That seems like a big project - writing a graphic converter.

Yes.

Each release of OG introduces new bugs (things that worked now don’t work). Which is why I remain on OG 5.4.4. Then there is the loss of features, because the company does not believe in backward compatibility. I am not going to pay yet more money for the next version, to obtain a product that does less, and breaks more often, but has new features that I have managed without.

There are quite a few people who do. My commercial decision is, do not spend time and money on developing that route, because it further entrenches the use of OG. For the longer term, I have to look into getting a full replacement.

Exactly. Not a snowballs chance in hell.

Cheers

1 Like

I’ve long wanted the ability to copy a large number of objects and have them pasted all at once as individual objects, so that I could do slide animations (revealing elements one at a time) in Keynote. My reason for not presenting from Omnigraffle directly would be that programs such as Powerpoint and Keynote are set up to make it very easy to make slide presentations, which would normally include slides other than the diagram slide. That’s important when there is one presentation per lecture, and a couple of lectures per week. So what I would do instead was copy and paste the whole diagram, lock it down, then copy and paste individual elements on top of it in their correct place, so that I could reveal-animate them in Keynote. Then unlock and delete the whole-diagram image.

1 Like

As you mentioned animation I wonder if building up in layers and exporting graphics with subsets of those layers is a viable approach.

I’d love to see some automation that shows how exporting a subset of layers would work.

e.g.

  1. Just export Layer 1
  2. Just export Layers 1 and 2
  3. etc…

Export could be to SVG - as PowerPoint supports it.

(As my current obsession is writing PowerPoint presentations in Markdown I’d have to think about how to express animation in Markdown terms. Probably successive graphics with metadata to control it in an HTML comment.)

(I have to admit I don’t like animations in presentations, but that’s by the by.)

Excellent method.

Strictly speaking, that is not animation (which PP/Keynote have), but controlled progression or increments.

That is exactly what I meant in the other ways my post above, which I call increments or progressions.

The copy-paste as SVG or PDF.

Cheers

I agree it’s not real Animation. I want to see what python-pptx can do with “animating by replacing an image”. But it won’t be soon that I’ll implement anything in md2pptx. (Yes, md2pptx is a sideshow but if I can do it it might be useful to people - and might illustrate the method.)

I would hope SVG would be usable - rather than a .PNG.

Has anyone got sample code for exporting selected layers - whether in OmniAutomation or AppleScript?

1 Like

Here’s some Omni Automation code for exporting your current selection. (You could export a list of arbitrary shapes instead, this code just happens to be grabbing the shapes to export from the selection.)

(async () => {
    let exportDocumentToPasteboardAsType = (async (document, exportType) => {
        console.log(`DEBUG: Copying ${exportType} to the pasteboard from ${document}`);
        let wrapper = await document.makeFileWrapper("export.data", exportType.identifier);
        let data = wrapper.contents;
        let pasteboard = Pasteboard.general;
        pasteboard.clear();
        pasteboard.setDataForType(data, exportType);
        console.log(`DEBUG: Copied ${exportType} to the pasteboard (${data.length} bytes), resulting in ${pasteboard.types}`);
        // console.log(`DEBUG: Base-64 data: ${data.toBase64()}`)
    });

    let copySelectionToNewDocument = (async (selection) => {
        let newDocument = await Document.makeNew();
        let newCanvas = newDocument.portfolio.canvases[0];
        let copiedGraphics = newCanvas.duplicate(selection.graphics);
        newCanvas.canvasSizingMode = CanvasSizingMode.Fit;

        console.log(`DEBUG: Copied selected graphics to new document ${newDocument}, canvas size ${newCanvas.size}`);

        return newDocument;
    });

    let exportSelectionToPasteboardAsType = (async (selection, exportType) => {
        let newDocument = await copySelectionToNewDocument(selection);
        await exportDocumentToPasteboardAsType(newDocument, exportType);
        newDocument.close();
    });

    try {
        await exportSelectionToPasteboardAsType(document.windows[0].selection, TypeIdentifier.png);
        // let svgType = new TypeIdentifier("public.svg-image");
        // await exportSelectionToPasteboardAsType(document.windows[0].selection, svgType);
    } catch (e) {
        console.log(`Caught error: ${e}`);
    }

})();

Caveat: The reason for the commented-out log of the data in base-64 format is because the pasteboard accepts the public.svg-image format (as we can see from the types it makes savailable), but then apparently tries to convert it to other possible formats and ends up losing track of it in the process. So because of that system bug (tested on macOS Monterey version 12.0.1) it doesn’t actually work to send that content to the pasteboard using that type identifier. (This could be modified to write the SVG to the pasteboard as plain text instead by just swapping in TypeIdentifier.plainText.identifier in the call to setDataForType(). Or perhaps write it to a temporary file, then copy that file to the pasteboard? Or just use that file directly, for wherever this data is headed next.)

Exporting in PNG format (as the code currently does, specifying TypeIdentifier.png) works fine. As does PDF format (use TypeIdentifier.pdf instead).

2 Likes