Skip to main content

OmniGraffle Stencil generator

Tool to create OmniGraffle stencils from SVG icons.

Features:

  • create multiple sheets by directory
  • parametrize object magnets
  • filter images and format icon names

Idea based on script from AWS-OmniGraffle-Stencils

Usage

Requires Python 3.8+.

Install:

pip3 install omnigraffle-stencil

Run:

omnigraffle-stencil --help

to see all options:

usage: omnigraffle-stencil [-h] [--svg-dir SVG_DIR] [--stencil-file STENCIL_FILE] [--filename-includes [FILENAME_INCLUDES [FILENAME_INCLUDES ...]]] [--filename-excludes [FILENAME_EXCLUDES [FILENAME_EXCLUDES ...]]]
                           [--stencil-name-remove [STENCIL_NAME_REMOVE [STENCIL_NAME_REMOVE ...]]] [--no-vertex-magnets] [--side-magnets SIDE_MAGNETS] [--text-output]

Convert SVG files into OmniGraffle stencil

optional arguments:
  -h, --help            show this help message and exit
  --svg-dir SVG_DIR     svg files directory path (default: ./svg)
  --stencil-file STENCIL_FILE
                        name of output stencil file (default: output.gstencil)
  --filename-includes [FILENAME_INCLUDES [FILENAME_INCLUDES ...]]
                        strings to filter image file name by, taking only those which contains them all
  --filename-excludes [FILENAME_EXCLUDES [FILENAME_EXCLUDES ...]]
                        strings to filter image file name by, taking only those which do not contain any of them
  --stencil-name-remove [STENCIL_NAME_REMOVE [STENCIL_NAME_REMOVE ...]]
                        strings to be removed from image file name when creating stencil name (default: . - _)
  --no-vertex-magnets   don't create magnets on vertices (NE, NW, SE, SW)
  --side-magnets SIDE_MAGNETS
                        number of magnets for each side (default: 5)
  --text-output         write OmniGraffle data file as text instead of binary

Input files are taken from the given location (./svg by default) and should be grouped into directories. Every directory will be parsed to a separate canvas in output stencil.

SVG directories structure example:

svg/
├── Group 1/
│   ├── icon1.svg
│   ├── icon2.svg
│   ├── icon3.svg
└── Group 2/
    ├── icon4.svg
    └── icon5.svg

AWS Architecture Icons example

To generate icons from AWS Architecture Icons download SVG zip file (example: AWS-Architecture-Assets-For-Light-and-Dark-BG_20200911) and unpack it.

Run script with options:

omnigraffle-stencil \
    --svg-dir "AWS-Architecture-Assets-For-Light-and-Dark-BG_20200911/AWS-Architecture-Service-Icons_20200911" \
    --stencil-file AWS_20200911_Services.gstencil \
    --filename-includes _48 \
    --stencil-name-remove Arch_ _48 . - _ \
    --group-name-remove Arch_ . - _

Output stencil will be created as AWS_20200911_Services.gstencil.

Check out the AWS stencil in Stenciltown - it contains all Service and Resource icons.

Development

Requires Python 3.8+ and Poetry.

Install dependencies in virtual env:

poetry shell
poetry install

Troubleshooting installing pillow library on MacOS: https://akrabat.com/installing-pillow-on-macos-10-15-calatalina/

Get virtual env path for the IDE:

poetry env info -p

Run script:

poetry run omnigraffle-stencil

Publishing

Build and publish package:

poetry build
poetry publish

Release files for omnigraffle-stencil 1.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for omnigraffle-stencil 1.1.0
File Size Uploaded
omnigraffle-stencil-1.1.0.tar.gz 9.9 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for omnigraffle-stencil 1.1.0
File Interpreter ABI Platform
omnigraffle_stencil-1.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 20.1 kB

Release files / omnigraffle-stencil-1.1.0.tar.gz

Download URL omnigraffle-stencil-1.1.0.tar.gz
Size 9.9 kB
Tags Source
SHA-256 checksum
How to use checksums
7666d8117b47834956b99a302eab15e85eda707e758947384c5ec32e1e310a39
BLAKE2b-256 checksum
How to use checksums
ae7b16cdde415c9d2e102ae945b590fc7aeac3d6f13920d29cd7cfec068454ab
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/1.1.4 CPython/3.9.1 Darwin/19.6.0

Release files / omnigraffle_stencil-1.1.0-py3-none-any.whl

Download URL omnigraffle_stencil-1.1.0-py3-none-any.whl
Size 10.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
e7af519a27f74aa836ae69a0f82d5f741cc65d3ceece5ccfd1563dfd0c49825e
BLAKE2b-256 checksum
How to use checksums
faa4f008d4fd7e94be83dfb939fa96bca14d6b750a6ac3de8942b2a7bcb7d5a0
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/1.1.4 CPython/3.9.1 Darwin/19.6.0

Release history Release notifications | RSS feed

This release

1.1.0 This release

2 release files

1.0.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page