You could, for example, put a pair of such shapes into the OmniGraffle clipboard (for pasting into a canvas), by running the JavaScript for Automation script below, from Script Editor etc.
(Using JXA rather than the faster omniJS here, simply because it has full access to the clipboard, and some useful ObjC functions)
(() => {
'use strict';
ObjC.import('AppKit');
// GENERIC FUNCTIONS --------------------------------------
// Left :: a -> Either a b
const Left = x => ({
type: 'Either',
Left: x
});
// Right :: b -> Either a b
const Right = x => ({
type: 'Either',
Right: x
});
// bindLR (>>=) :: Either a -> (a -> Either b) -> Either b
const bindLR = (m, mf) =>
m.Right !== undefined ? (
mf(m.Right)
) : m;
// plistLR :: JS Object -> Either String XML
const plistLR = jso => {
let error = $();
const xml = $.NSString.alloc.initWithDataEncoding(
$.NSPropertyListSerialization
.dataWithPropertyListFormatOptionsError(
$(jso),
$.NSPropertyListXMLFormat_v1_0, 0,
error
),
$.NSUTF8StringEncoding
);
return Boolean(error.code) ? Left(
error.localizedDescription
) : Right(
ObjC.unwrap(xml)
);
};
// MAIN -----------------------------------------------------------------
const contentType = 'com.omnigroup.OmniGraffle.GraphicType';
const dctLinkBack = {
"Layers": [{
"Print": true,
"Lock": false,
"View": true,
"Name": "Layer 1",
"Artboards": false
}],
"Origin": "{0, 0}",
"Scale": "No scale",
"Color": {
"g": "1",
"space": "srgb",
"r": "1",
"b": "1"
},
"GraphicsList": [{
"Points": [
"{158.74015892058841, 357.87401899507699}",
"{246.6141754659142, 357.87401899507665}"
],
"LayerIndex": 0,
"AllowLabelDrop": false,
"Head": {
"Info": 3,
"ID": 60
},
"Style": {
"shadow": {
"Draws": "NO"
},
"stroke": {
"Legacy": false,
"HeadArrow": "FilledArrow",
"Color": {
"g": "0.149131",
"space": "srgb",
"r": "1",
"b": "0"
},
"TailArrow": "0",
"Width": 2
},
"fill": {
"Draws": "NO"
}
},
"FontInfo": {
"Size": 12,
"Font": "Helvetica"
},
"Class": "LineGraphic",
"ID": 65,
"Tail": {
"Info": 3,
"ID": 63
}
},
{
"LayerIndex": 0,
"Style": {
"shadow": {
"Draws": "NO"
},
"stroke": {
"Draws": "NO"
},
"fill": {
"Draws": "NO"
}
},
"Graphics": [{
"Bounds": "{{246.61417546591417, 232.44094699086173}, {103.46456786788349, 167.24409600561989}}",
"Flow": "Clip",
"Style": {
"shadow": {
"Draws": "NO"
},
"stroke": {
"Color": {
"g": "0.665044",
"archive": {},
"r": "0.636504",
"b": "0.791745"
},
"CornerRadius": 5,
"Draws": "NO",
"Width": 0.5
}
},
"Text": {
"VerticalPad": 0
},
"FitText": "Clip",
"FontInfo": {
"Size": 12,
"Font": "Helvetica"
},
"Class": "ShapedGraphic",
"ID": 60,
"Magnets": [
"{-1, -0.5}",
"{-1, 0}",
"{-1, 0.5}"
]
},
{
"Bounds": "{{246.61417546591417, 134.64567051299912}, {103.46456786788349, 265.03937248348245}}",
"Flow": "Clip",
"Style": {
"stroke": {
"Color": {
"g": "0.665044",
"archive": {},
"r": "0.636504",
"b": "0.791745"
},
"CornerRadius": 5,
"Width": 0.5
}
},
"Text": {
"VerticalPad": 0
},
"FitText": "Clip",
"FontInfo": {
"Size": 12,
"Font": "Helvetica"
},
"Class": "ShapedGraphic",
"ID": 61
}
],
"Class": "Group",
"ID": 59
},
{
"HFlip": "YES",
"LayerIndex": 0,
"Style": {
"shadow": {
"Draws": "NO"
},
"stroke": {
"Draws": "NO"
},
"fill": {
"Draws": "NO"
}
},
"Graphics": [{
"Bounds": "{{55.275591052704897, 232.44094699086207}, {103.46456786788349, 167.24409600561989}}",
"HFlip": "YES",
"Flow": "Clip",
"Style": {
"shadow": {
"Draws": "NO"
},
"stroke": {
"Color": {
"g": "0.665044",
"archive": {},
"r": "0.636504",
"b": "0.791745"
},
"CornerRadius": 5,
"Draws": "NO",
"Width": 0.5
}
},
"Text": {
"VerticalPad": 0
},
"FitText": "Clip",
"FontInfo": {
"Size": 12,
"Font": "Helvetica"
},
"Class": "ShapedGraphic",
"ID": 63,
"Magnets": [
"{-1, -0.5}",
"{-1, 0}",
"{-1, 0.5}"
]
},
{
"Bounds": "{{55.275591052704897, 134.64567051299912}, {103.46456786788349, 265.03937248348245}}",
"HFlip": "YES",
"Flow": "Clip",
"Style": {
"stroke": {
"Color": {
"g": "0.665044",
"archive": {},
"r": "0.636504",
"b": "0.791745"
},
"CornerRadius": 5,
"Width": 0.5
}
},
"Text": {
"VerticalPad": 0
},
"FitText": "Clip",
"FontInfo": {
"Size": 12,
"Font": "Helvetica"
},
"Class": "ShapedGraphic",
"ID": 64
}
],
"Class": "Group",
"ID": 62
}
],
"ZoomLevel": 1
};
// og7pBoardFromLinkBackPlist :: String -> IO Bool
const og7pBoardFromLinkBackPlist = plistXML => {
const pb = $.NSPasteboard.generalPasteboard;
return (
pb.clearContents,
pb.setStringForType(
$(plistXML),
'com.omnigroup.OmniGraffle.GraphicType'
)
);
};
// Assumes OG Linkback JSO format
// og7pBoardFromJSO :: Object -> IO Clipboard
const og7pBoardFromJSO = jso =>
bindLR(
plistLR(dctLinkBack),
xml => Right(og7pBoardFromLinkBackPlist(xml))
);
return og7pBoardFromJSO(dctLinkBack);
})();