← Back to home

Import HMI symbols into Ignition Perspective

15-minute setup · Ignition 8.1+ · Perspective + Vision

Ignition has the cleanest import path of any HMI: drop SVGs into Image Management, place an Image component, and use a switch() expression to pick the right image based on a state tag. Works identically for Perspective and Vision. The SVGs come from the Symbol Builder (your own equipment), the community library (CC BY 4.0) or the icon library (badges, arrows, navigation icons).

Compatibility: tested on Ignition 8.1.30+. Perspective renders SVG natively (best); Vision rasterizes at runtime (still works).

Step-by-step

1

Export your symbols as SVG

  • Draw it: in the Symbol Builder, compose the equipment from shapes, ISA elements and stamps (512 × 512 canvas for square symbols, 256 × 128 for the wide motor-and-label footprint) and click ↓ SVG. The export is plain SVG with literal hex colours — no CSS classes, no scripts, no external fonts — which is exactly what Perspective and Vision's renderer like.
  • Reuse it: open a symbol from community motors, valves, pumps or tanks and click Download SVG. Credit the author in your project documentation; Open in builder to adapt it first.
  • Badges and icons: alarm priority badges, state badges, arrows and navigation / system-bar icons (home, alarms, trends, horn silence) come from the icon library as SVG.

One file per state: build the base, Save it as a template, recolor the body fill per state (gray stopped, white or green running, yellow no-feedback, blue manual, dark gray disabled), stamp the P1 / P2 badge for the alarm variants, export each as {kind}_{state}.svg — e.g. motor_3ph_running.svg, motor_3ph_running_p1.svg. Leave the tag text out of the symbol; the embedded view adds it (step 5).

Composing in the Builder needs no account. Downloading does: a free account gives 5 downloads a month, Starter 50, Studio unlimited. Symbols you publish yourself are always free to download.

2

Upload to Image Management

In the Designer or the Gateway web interface:

  • Designer: Tools → Image Management.
  • Gateway: Config → System → Images.

Create a folder structure: symbols/motor/, symbols/pump/, symbols/badges/, etc. Drag the SVG files into each folder (multi-select works). The path becomes the image reference (e.g. symbols/motor/motor_3ph_running.svg).

3

Place an Image component (Perspective)

Open a Perspective view. From the Component Palette → DisplayImage. Drop on the canvas.

In the Property Editor, set props.source to the image path:

/system/images/symbols/motor/motor_3ph_running.svg
4

Bind state with a switch() expression

Right-click props.sourceEdit Binding → Expression. Use:

// Bind to the state INT tag in your PLC: "/system/images/symbols/motor/motor_3ph_" + switch( {[default]Equipment/M101/State}, 0, "stopped", 1, "starting", 2, "running", 3, "nofb", 4, "manual", 5, "disabled", 6, "running_p1", 7, "running_p2", 8, "stopped_p1", "stopped" ) + ".svg"

This expression evaluates the state INT and returns the matching image path. Ignition reloads the image automatically when the tag value changes. The suffixes are just the naming convention from step 1 — if you named your files differently, change the strings.

5

(Recommended) Wrap as an Embedded View / Template

For Perspective: create a view per equipment kind (FP_Motor3ph) with two parameters, state (INT) and tag (string). Inside, place the Image bound to those params and a Label for the tag. Drop the view as Embedded View wherever you need it; bind state and tag per instance.

For Vision: use a UDT-driven Template with a State int parameter — same structure, classic Vision style.

Matching the Perspective look

Perspective's default theme is flat and light. Symbols drawn with 2 px strokes, no gradients and the calm gray body from the Builder already sit well on it. If you want the badges and navigation icons from the icon library in the Perspective accent colours, the library sidebar has an Ignition Perspective style preset that recolors them before download. In the Builder, choose the fills yourself — and keep the state colours semantic (red and orange only for alarms).

Recommended PLC encoding (Ignition tag scripting)

If you want Ignition to compute the state itself (e.g. when the PLC just exposes booleans), drop a Derived Tag with this expression:

// State derived from individual booleans if({[.]Fault}, 8, if({[.]AlarmP2} && {[.]Running}, 7, if({[.]AlarmP1} && {[.]Running}, 6, if({[.]LocalMode}, 4, if({[.]Disabled}, 5, if({[.]NoFeedback}, 3, if({[.]Running}, 2, if({[.]Starting}, 1, 0))))))))

Sizing for Perspective

TargetImage sizeNotes
Desktop browser256×128SVG scales — set the Image component size, not the source
Tablet (Mobile)192×96SVG, smaller component frame
Phone128×64SVG; consider hiding non-critical equipment
Wall display (4K)320×160 or 512×256SVG still scales; if you must use PNG, export from a 512×512 or 640×360 canvas

Common pitfalls

What's next

Build the symbol, then bind it

The Symbol Builder needs no account to compose. A free account gives you 5 downloads a month; publish your own symbols under CC BY 4.0 and download them free. Or start from what other engineers already drew, and test the switch() pattern in your own view.

Other vendors