circuitRF Reference Guide

Symbol Editor

The Symbol Editor draws the glyph a cell shows on a schematic — its body art plus the pins that connect it. It is a focused drawing tool, not a cell editor: it never changes a cell's port count or parameters, only how the cell looks.

What it edits

A symbol (.csym) is a dumb glyph: a list of drawing primitives plus a set of pins, each mapped to one of the cell's ports. It owns geometry only — the cell owns the port count, parameters, and identity, and decides which of its (possibly several) symbols is primary. A schematic instance draws the cell's primary symbol; editing the symbol updates every instance of that cell, live.

Open it from View → Open Symbol Editor (docked or as a tear-off window), or by opening a .csym file. New scratch symbols can be created without a workspace.

A cell has up to three views and each has its own editor: this one, the Schematic Editor for the electrical contents, and the Layout Editor for the physical artwork.

Drawing primitives

A symbol is built from typed primitives in component-local coordinates (100 units = one connection-grid square):

PrimitiveUse
Line, Polyline / Pathleads, zigzags, general open shapes (free-angle, not Manhattan-routed)
Rect, Rounded Rectdevice boxes, terminating-impedance frames
Circle / Ellipsesource bodies, dots
Arcinductor coils
Triangle / Polygonground symbol, arrowheads (stroked or filled)
Quad / Cubic curvethe capacitor's curved plate
Sine, Half-waveparameterized smart-paths (amplitude, cycles) for AC/tone-source art
Textlabels — string, anchor, font size, style (regular / bold / italic / condensed)
Bitmapa reference image to trace over (lowest Z, editable opacity, lockable; not grid-snapped)

Each drawable primitive carries a stroke width, a fill flag, and a color role — never a literal RGB. Symbols draw in theme roles (symbol-line, symbol-text), so they stay correct in light and dark mode automatically. There is no color picker; stroke width and font size/style are editable, color is not.

Pins & ports

A pin is a placed marker mapped to one of the cell's ports. The editor shows the cell's ports as the set you can map; you place a pin and assign it a port.

An unmapped port is legal — it's an open circuit

If a port has no pin, the symbol still works: that port is treated as an open circuit. A half-authored symbol is always safe, and a soft panel flags any unmapped port without blocking editing.

A pin's position is body geometry; its identity is the port mapping. The lead you draw from the body to the pin is ordinary art, but the pin tip itself always lands on the connection grid.

Moving a pin can disconnect wires (for now)

In this release, connectivity is positional, so moving a pin relocates it on every instance and wires at the old location become unconnected — the editor warns before applying such a move. circuitRF is committed to migrating to logical pin binding (where wires follow a moved pin, as in other schematic editors); the position-vs-identity split above is designed to make that a clean addition.

Two grids: pins vs. art

This is the two-grid rule applied to symbols: pins snap to the connection grid P (100 units) so placed instances always connect, while body art snaps to the fine authoring grid p (5 units) for drawing freedom. Bitmaps are exempt from both — placed and resized freely as tracing aids. You can toggle the art-grid snap; the pin grid is always enforced.

Orientation convention

The standard library follows the conventional EDA look:

Tools & editing

Stroke: Normal Thin Thick 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 Stroke: Normal Thin Thick 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
Symbol editor toolbar
#ButtonWhat it does
1Zoom to Fit (F)
2Select / Move (S)
3Line — click and drag
4Polyline — click points; Enter or double-click to finish
5Rectangle — drag corner to corner
6Rounded Rectangle — drag corner to corner
7Circle — drag from centre
8Ellipse — drag bounding box
9Arc — drag from centre; 270° sweep
10Triangle — click 3 points (auto-commits)
11Polygon — click points; Enter or double-click to close
12Quadratic Bézier — click start, control, end (3 points)
13Cubic Bézier — click start, ctrl1, ctrl2, end (4 points)
14Sine wave — drag to set length and amplitude
15Exponential taper — drag to set length and start width
16Text — click anchor, type, Enter to place
17Pin — click empty space to place; use Select tool to move, delete, or rotate pins (P)
18Insert Bitmap…
19Snap: Fine Grid (G)
20Rotate Selection 90° CW about origin (R)
21—Stroke:
22 Normal Normal Normal stroke weight
23 Thin Thin Thin stroke weight
24 Thick Thick Thick stroke weight
25Undo (⌘Z / Ctrl+Z)
26Redo (⌘⇧Z / Ctrl+Shift+Z)

The toolbar is grouped by what you are doing, and the groups are worth learning as groups:

Gestures:

Everything is undoable on the symbol's own undo stack, with full select / move / delete / rotate, an inspector for the selected primitive's coordinates and text, a resize gripper, and copy/paste (including between symbols). Any schematic showing the cell re-renders live as you edit.

Locked symbols

The standard-library symbols (R, L, C, V, Tone, Term, GND, Port, FET, ZPort, SDD) and the annotation symbols (VAR, MEAS, the analysis directive) are defined but not user-editable. You can place them but not edit them; the editor opens a locked symbol read-only. This is a cell-level flag, so the cell — not the symbol file — owns it.

Auto-generated symbols

For a cell with no symbol yet, circuitRF can generate one on command (never automatically): an outer rectangle with a thinner inset, odd-numbered ports down the left edge and even down the right, each with a short lead and a port-number label inside the box; the box grows in height with the port count. Pin tips land on the connection grid by construction. A 3-port symbol is special-cased to the conventional device look — port 1 on the left at center, ports 2 and 3 on the right (matching the FET). The result is an ordinary editable symbol you then refine; re-running generation is an explicit command that regenerates from scratch (discarding manual edits, with a warning).


See also: Schematic Editor · Layout Editor · Dynamic symbols (how SDD/ZPort pins grow) · Grid & Connectivity · File formats (.csym). Full design: docs/design/symbol-editor.md.