Symbol Editor New in 1.0.8
The built-in library covers standard P&ID and electrical equipment. A plant also has things no standard draws: a vendor's pump, a particular kiln, a skid that only exists on this site. The symbol library holds your own symbols beside the built-in ones, and the Symbol Editor is where they are drawn and given behaviour.
A symbol you make is not a picture. Its parts — the impeller, the level inside the tank, the valve's blade — are named, and the symbol declares parameters that each placed copy binds to tags, rules that tie a part to a parameter (spin while running, fill to the level, turn red in fault), states for equipment that has distinct positions, and ports where pipe and cable ends attach. Placed on a screen, it behaves like any built-in symbol.
The library
The library is global: one library for the whole installation, shared by every project. Editing a symbol changes it everywhere it is placed, in every project.
In the Designer's Symbol Library flyout, your symbols are on the Imported tab, beside
Process, Electrical and Arrows, grouped by category. The tab's bar shows the count and the
Draw, Import and Export all buttons; the header's Add menu offers Draw a new
symbol and Import a file…. Hover a tile for its own buttons: edit (pencil), save as a
.qbqsym file, and delete.
Drag a tile onto the canvas to place it.
| Action | Permission |
|---|---|
| Place symbols, see the library | Manage Designer |
| Draw, import, edit and delete symbols | Manage Symbol Library |
Only SuperAdmin has Manage Symbol Library by default. Grant it to the few people who maintain the plant's symbols: a change to a symbol reaches every project.
The Add menu also offers Build a 3D symbol and Build from a 3D model…. A 3D symbol is placed in a 3D Viewer rather than on a 2D screen; it has its own editor and is listed under the 3D heading of the Imported tab.
Opening the editor
| From | How |
|---|---|
| The palette | Draw (a blank symbol) or the pencil on a tile |
| The canvas | Right-click a placed symbol → Edit Symbol |
| An import | The editor opens on the new symbol as soon as the import dialog closes |
| The AI Assistant | Approving a symbol the assistant drew opens it here, unsaved — see Ask AI |
The editor is full screen. The drawing is on the left — toolbar, Layers list, the preview, and under it a Test values strip with one control per parameter, which drives the preview and is not saved. The panel on the right has six tabs: Style, Rules, States, Parameters, Ports and Info.
The footer holds Delete symbol, Cancel and Add to library (a new symbol) or Save. Notices and save errors appear in the footer between them.
Esc never closes the editor, and neither does a click outside it. Esc steps back one level: the shape you are drawing, then point editing, then the tool (back to the Pointer), then the selection. Cancel with unsaved changes asks first.
Drawing
Every shape you draw is a part of its own — it can be named, coloured, animated and bound.
New parts are numbered rect_1, line_1, path_1, and a duplicate of rect_1 takes the next
free number.
Tools
| Tool | Key | Draws |
|---|---|---|
| Pointer | V | Selects, moves, edits points |
| Line | L | A straight line |
| Rectangle | R | A rectangle |
| Ellipse | E | An ellipse or circle |
| Polygon | P | Click corners; click the first point or double-click to close, Enter to leave it open |
| Freehand | F | A stroke, simplified so a scribble is not hundreds of points |
| Pen (Bézier path) | B | Click for a corner, drag for a smooth anchor; Enter, Esc or double-click finishes, Backspace removes the last anchor |
| Text | T | Click and type in place; Enter or a click away commits, Esc drops it |
The Shapes menu adds presets, each dragged out as a box: Triangle, Diamond (D), Hexagon
(H), Parallelogram, Trapezoid, Cylinder and Cube.
Hold Shift to constrain: 45° for lines, a square, a circle, an even preset.
Selecting and arranging
- Click a part, or Shift/Ctrl-click to add to the selection. Drag on empty space for a marquee:
every top-level part it touches is selected.
Ctrl+Aselects all. - The Layers list shows parts front-most first, groups collapsible. Double-click a row (or its pencil) to rename; its bin deletes the part — a group with everything in it.
- Drag to move; arrow keys nudge, Shift ×10. Resize and rotate handles sit on the selection, and a
stretch keeps the stroke width.
Shiftwhile turning snaps to 15°, and a turn ending within 4° of level lands exactly on it. - Right-click a part or a Layers row for the same actions as the toolbar.
| Action | Keys |
|---|---|
| Align left / centre / right | Alt+A / Alt+H / Alt+D |
| Align top / middle / bottom | Alt+W / Alt+V / Alt+S |
| Distribute horizontally / vertically | toolbar (3 or more parts) |
| Flip horizontal / vertical | Shift+H / Shift+V |
| Bring to front / forward | Ctrl+Shift+] / Ctrl+] |
| Send backward / to back | Ctrl+[ / Ctrl+Shift+[ |
| Group / ungroup | Ctrl+G / Ctrl+Shift+G |
| Duplicate | Ctrl+D |
| Delete | Delete |
| Undo / redo | Ctrl+Z / Ctrl+Shift+Z or Ctrl+Y |
Undo keeps 100 steps. Typing into one field within a second is one step.
Point editing. Double-click a line, polygon, freehand stroke or path. Drag a point; press on a segment to insert one; select a point and press Delete to remove it. On a pen path, double-click an anchor to switch it between smooth and corner, and hold Alt to break a handle pair. Double-click a text part to edit its text.
Combining shapes
With two or more parts selected, the Combine buttons merge them into the back-most part, which keeps its name, paint and place:
| Operation | Keys | Result |
|---|---|---|
| Union | Alt+Shift+U | One outline around both |
| Subtract | Alt+Shift+S | The front parts cut out of the back one |
| Intersect | Alt+Shift+I | Only where they overlap |
| Exclude | Alt+Shift+E | Everything except the overlap |
The front parts are used up, together with their rules and state looks. Alt-click Subtract or Intersect to keep them — cut a pipe at a tank, keep the tank. Subtract with a line at the back trims the line where it crosses the shapes in front. Curves stay curves, and the result stays point-editable.
The drawing box
A symbol is drawn inside a box — the checkered artboard. With nothing selected, the Style tab shows its W and H (1 to 10000) and a Fit to parts button; you can also drag its right or bottom edge, or its corner (Shift keeps the proportions). The box grows right and down, and nothing already drawn moves.
Nothing can be drawn or dragged past the box. A rotate or flip that pushes a part over an edge slides it back in; one that no longer fits stays put and the toolbar offers Grow the drawing. The rulers along the preview's edges are in drawing units; hold Alt and hover another part to measure the gap to the selection.
Style
The Style tab paints the selected parts. Its changes are written into the drawing itself, unlike a state look, which only applies while the state is active.
| Section | Contents |
|---|---|
| Position & size | X, Y, Width, Height, Rotation °, Corner radius (rectangles) |
| Text | Content, size, bold, alignment (text parts) |
| Name · Label | The part's name, used by rules and ports, and a friendlier label shown in rules and states |
| Fill | Solid or Gradient — closed shapes only |
| Look | Plain line or Pipe — open lines only |
| Line colour · Line width | |
| Line ends | Flat, Round, Square |
| Corners | Sharp, Round, Bevelled |
| Dash | Solid, dashed, dotted, long dash, dash-dot, long dash-dot |
| Flow arrows | None, the way the line was drawn, or against it; Arrow size S, M, L, XL or 0.5–2× |
| Arrowheads | Start and end, each on or off |
| Opacity |
Gradient has presets — Cylinder, Horizontal pipe, Lit from above, Sphere / dome — that turn a flat shape into a vessel or motor body; adjust it as linear (with an angle) or radial, with 2 to 6 colour stops.
Pipe draws a line, polyline or path as a shaded round pipe whose shading follows every bend. Shade it in the Line colour (which follows colour rules) or with a Gradient — Steel, Stainless, Copper, PVC, Dark iron, Insulated, or your own edge, middle and centre colours. Arrowheads on a pipe become shaded pipe heads, and flow arrows ride inside it, with their own Arrow colour.
Colours left at their default follow the theme, so a symbol reads correctly in light and dark.
Parameters
A parameter is an input each placed copy of the symbol has — the property you bind to a tag on the canvas. Add one from the Add menu on the Parameters tab:
| Type | Holds | Extra fields |
|---|---|---|
| On / off | A boolean — running, open, in fault | |
| Number | A value — speed, level, angle | Min, Max, Unit |
| Choice | One of a list | Options, comma separated |
| Text | A string |
Each has a name, a Label and a Default. The card says how many rules it drives. Renaming a parameter re-points every rule that reads it; deleting one removes the rules that depend on it.
Rules
A rule ties a part to a parameter. On the Rules tab pick the part, pick the kind, and press + Rule.
| Rule | What the part does |
|---|---|
| Spin (continuous) | Turns continuously. Speed (rpm) 0–600, fixed or from a Number parameter; clockwise or counter-clockwise |
| Rotate to angle | Turns to an angle mapped from the parameter's input range |
| Move | Slides horizontally or vertically, mapped from the input range |
| Scale | Grows or shrinks, mapped from the input range |
| Fill level | Fills bottom → top (or any other direction) to the level, in a Level colour |
| Flow (moving arrows or dashes) | Moves the line's flow arrows, or marches its dash; As drawn or Reversed |
| Blink | Blinks in a colour |
| Fill colour · Line colour | Takes a colour from a colour map |
| Show / hide | Shows or hides |
| Opacity | Fades, mapped from the input range |
| Text | Shows the parameter's value, with a prefix, decimals and suffix |
Spin, Flow, Blink and Show / hide run While a condition holds (is on, is off, =, ≠, >,
≥, <, ≤). The others are Driven by a parameter, with an optional Only when condition.
A colour map matches exact values or number ranges. Range notation is interval notation:
[0,50) is 0 up to but not including 50, [90,] is 90 and above. A range that does not parse is
marked invalid rather than silently never matching. The last row, Otherwise, catches the rest.
A fill level draws the liquid under the part and keeps the part's whole outline, so a tank wall above the liquid stays visible. The surface stays level however the part is turned.
Pivots
Spin, Rotate and Scale turn about the part's centre by default. Drag the red cross in the preview to move the pivot — an impeller turns about its hub, a valve blade about its hinge — or Reset it.
Motion that leaves the drawing
A pointer spun about one end can sit inside the box and still sweep far outside it. The preview outlines where the selected rule's motion reaches — a spin's full circle, a rotate's range, a move's travel, a scale's largest size — in red when it leaves the drawing, and the rule's card offers Grow the drawing to fit. On the canvas, anything past the drawing box either pokes out of the placed widget or is cropped, so keep the sweep inside.
States
Equipment with distinct positions — a valve open or closed, a breaker, a lamp that is off, on or in fault — is a state set. On the States tab, start from a preset:
| Preset | States |
|---|---|
| Open / Closed | Closed 0, Open 1 |
| Off / On | Off 0, On 1 |
| Off / On / Fault | 0, 1, 2 |
| Custom | Your own |
Each state has the Tag value that selects it and a Label. A state set creates a Choice
parameter whose options stay in step with the states; on the canvas the property lists the labels
while storing the tag values, so a numeric tag holding 1 selects the state whose value is 1.
For the selected part in the selected state, set its look: Visible (as drawn, shown or hidden), Fill, Line colour, Opacity, Rotate (°) and Move X / Y. A switch swings its blade by rotating it about a pivot; a fault lamp is hidden in every state but one. Back to as drawn clears a look.
States apply first and rules act on top, so a part can blink or spin in whatever state it is in.
Ports
A port is a named point where a line end attaches — a nozzle, a terminal. On the Ports tab, Place ports, then click the drawing: a port snaps onto the drawn outline and can be dragged and renamed.
On the canvas, a line end dropped within 12 px of a port pins to it and stays pinned through move, resize, rotate and flip — and follows the port if you later move it in the editor. A symbol with no ports lets lines attach to the outline anywhere, as built-in symbols do. A port that is renamed or removed falls back to that same behaviour, never to a box corner.
→ Connecting a line to equipment
Ask AI
Ask AI at the right end of the toolbar draws a new symbol from a description, or changes the open one:
a centrifugal pump, inlet left, outlet top, impeller spins while running
make the outlet longer
Pick a Style: Auto, Flat (2D, P&ID line art), Front (a straight-on elevation), 3D (shaded isometric) or Perspective. In 3D and perspective the platform does the projection, so the shapes are exact. Every shape the AI draws is its own part, and the answer comes with parameters, rules and ports already set up.
The drawing happens in the background. Keep working, or close the editor — you are told when it is done, by a notification and a message with Open symbol. If you edited the drawing in the meantime, the result waits for Apply or Discard instead of replacing your work. A finished drawing replaces the old one as one undoable step, and nothing is saved until you choose Add to library or Save. A run has up to 10 minutes.
Ask AI needs Manage Symbol Library, the AI assistant enabled, and the Create symbols capability, which is off until an administrator turns it on in Settings → AI. When only the capability is off, the button says where to turn it on.
The AI Assistant can also draw a symbol from a chat. Approving its proposal opens the Symbol Editor on an unsaved new symbol.
Importing a drawing
Import takes an SVG file from Inkscape, Illustrator or a CAD export — or a
.qbqsym file.
- Drop the file, or click to choose it.
- Review: the preview, the Parts and Ports that were detected (hover a part to highlight it), the Name, and the Category — pick one already in the library, or type a new one. Follow the theme colour makes black line art follow the theme.
- Import & set up — the editor opens on the new symbol.
Parts are found from names you already gave them. A group or shape with an Inkscape label, an
Illustrator layer name (data-name), a data-qbq-part attribute, or an id you chose becomes a
part. Generated ids such as path123 are ignored. Ports are found from names like port:inlet,
nozzle:outlet or terminal:L1 on a circle, rectangle or ellipse.
A file that cannot be imported says why. The limits:
| Limit | Value |
|---|---|
| File size | 512 KB |
| Elements | 20,000 |
| Nesting depth | 64 |
| Parameters / rules / ports / parts | 32 / 128 / 32 / 256 |
| State sets | 8, of up to 32 states each |
The drawing must have a viewBox or a numeric width and height. Compressed .svgz must be saved as
plain .svg first.
Symbols run on operator screens, so the drawing is cleaned on import and again by the server on
every save: scripts, styles, embedded images, foreignObject, links, SMIL animation and filters are
removed, and references may only point inside the drawing. CSS is turned into plain attributes and
<use> copies are expanded first, so a typical export keeps its look. What was adjusted is listed
under the review step.
Saving and changing a symbol
Add to library stores a new symbol; Save stores a change. Save is unavailable while the editor lists a problem — a rule reading a parameter that no longer exists, a Number parameter with Min not below Max, an empty name.
A save that removes a parameter or a port asks first, naming the projects that place the symbol: bindings on a removed parameter stop applying, and lines connected to a removed port fall back to the outline. If someone else saved the symbol while you had it open, your save is refused — reload and try again.
Deleting a symbol
Delete symbol in the editor's footer, or the bin on a palette tile, first shows where the symbol is placed:
- Not placed anywhere — one click.
- Placed — the projects are listed, together with any view open in this Designer that places it, saved or not. Tick I understand — delete it anyway to enable Delete anyway.
A deleted symbol cannot be restored, so export it first if in doubt. Wherever it was placed, the widget shows a Symbol deleted tile — never a blank box — until it is replaced or the symbol is imported again.
Symbol files
A .qbqsym file carries symbols between installations. Export all writes the whole library;
the download button on a tile writes one symbol.
Importing one lists its symbols by category, with search for large files; choose which to bring in.
For symbols you already have, choose Keep my version or Replace with the file's version —
replacing changes the symbol in every project. A symbol with the same name and category but a
different drawing is added as Name (2). The result can be filtered by Added, Replaced,
Already in library and Not imported, each failure with its reason. A file holds up to 500
symbols.
Symbols travel with views and projects
- A view pack carries the symbols its views place. Importing it re-points the views at the symbols in the target library. Without Manage Symbol Library, symbols the target does not have are not added and show as Symbol deleted.
- A project backup carries the symbols the project places. A restore never changes a symbol already in the library — that would change every other project — and adds missing ones only for a user with Manage Symbol Library; the rest are listed as not added.
A placed symbol
On the canvas a placed symbol is an Imported Symbol component. Its params group lists the symbol's parameters by label, each bindable like any property:
Feed Pump (Imported Symbol)
params.Running → tag Line1/P101/Running
params.Speed → tag Line1/P101/Speed
params.State → tag Line1/P101/State (shown as Off / On / Fault)
It also has a line colour, an optional caption and value display, an alarm source, and the same whole-widget motion as the drawing tools. The parameters come from the symbol, not the view, so a change to the symbol reaches every placed copy the next time it renders.