Skip to content

Repository files navigation

Isometry

Isometry is a Sketch plugin that allows to create isometric projections from layers easily.

Requirements

Sketch 2026.2.1 or later.

Features

The plugin can generate 3 types of isometric projections from your source layers. All kinds of shape layers, as well as text layers are supported.

Isometric Projections

Create Top Isometric Projection

Top Isometric Projection

Create Left Isometric Projection

Left Isometric Projection

Create Front Isometric Projection

Front Isometric Projection

Usage

Select one or more layers, then choose Plugins → Isometry and pick a projection.

Layers sharing an artboard are sheared as one composition, even when they live in different groups: their offsets relative to each other are transformed by the projection too, so a row of shapes in separate groups stays a row instead of drifting apart. Nothing is re-parented to achieve that — Sketch's grouping doesn't remap frames between coordinate spaces, so grouping across containers would pull layers out of their container and pile them on the same spot. Each container is projected on its own about a shared anchor point instead.

Layers in different artboards are projected independently. An artboard is a fixed canvas rather than part of one plane with the others, so composing across two of them would push content outside its own artboard, and the resize that follows would drag the artboard itself across the canvas. Projecting artwork shouldn't rearrange where artboards sit.

Note that projecting an artboard, or anything inside one, resizes that artboard. A projection is always larger than the artwork it came from — an 800×604 artboard's contents become 566×820 — and artboards clip whatever sticks out, so the artboard is resized to fit rather than letting the result be silently cut off. This applies whether you select layers inside the artboard or select the artboard itself. The fit is exact, so a dimension that wasn't overflowing can end up smaller. Artboards that already fit are left alone.

Text layers are converted to outlines, since a sheared glyph can no longer be represented as editable text. Images and symbol instances have no path geometry and cannot be sheared; they are rotated and scaled with the rest of the selection but keep their own shape, and the plugin reports how many layers were affected.

Installation

  • Download the latest release of the plugin
  • Un-zip
  • Double-click on Isometry.sketchplugin

Development

npm install          # builds and symlinks the plugin into Sketch
npm run build        # build once
npm run watch        # rebuild on change
npm test             # end-to-end verification against a real Sketch install

npm test drives your Sketch install through sketchtool: it builds a throwaway document, runs the plugin's commands against it, reads the resulting path geometry back out, and compares it to the isometric matrix R(θ₂)·S(sx,sy)·R(θ₁). It covers the three faces on a rectangle, nested groups with a bezier oval and a text layer, a projection inside a tight artboard, a projection of an artboard selected directly, selections spanning two artboards and two sibling groups (including the offset between the two, which must be transformed by the projection), a layer already rotated before projecting, a symbol instance, a gradient fill with a border and shadow, a pinned-width resizing constraint, an image that cannot be projected, and an empty selection.

Your own open documents are left alone: each fixture creates its own document, tagged by naming its page ISOMETRY-TEST, and only tagged documents are ever closed. Each fixture also checks that its test document is frontmost before running a command, and aborts if it isn't, so the plugin can't be pointed at a document the suite didn't create.

Sketch caches plugin code

If a rebuild doesn't seem to change anything, this is why. Sketch loads a plugin's JavaScript once and keeps using that copy, so a fresh npm run build has no effect on what the menu commands run until Sketch re-reads it — it's possible to keep looking at a bug that's already fixed. Note that sketchtool run does pick up the current build, so npm test can pass against a build the menu commands aren't using.

npm install runs skpm-link, which offers to enable Sketch's "Always Reload Scripts Before Running" developer setting — say yes, or set it directly:

defaults write com.bohemiancoding.sketch3 AlwaysReloadScript -bool YES   # then restart Sketch

To see which build Sketch actually has loaded, and compare it against "version" in src/manifest.json:

/Applications/Sketch.app/Contents/MacOS/sketchtool run-script '
var pm = AppController.sharedInstance().pluginManager();
console.log(pm.plugins().objectForKey("com.maxkonovalov.isometry").version())'

Turn the setting off again when you're done iterating — it makes Sketch re-read plugin code on every invocation, for every plugin. None of this affects anyone installing a released .zip; they always get fresh code.

License

Isometry is available under the MIT license. See the LICENSE file for more info.

About

📦 Sketch plugin that allows to create isometric projections from layers

Topics

Resources

Stars

20 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages