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):
| Primitive | Use |
|---|---|
| Line, Polyline / Path | leads, zigzags, general open shapes (free-angle, not Manhattan-routed) |
| Rect, Rounded Rect | device boxes, terminating-impedance frames |
| Circle / Ellipse | source bodies, dots |
| Arc | inductor coils |
| Triangle / Polygon | ground symbol, arrowheads (stroked or filled) |
| Quad / Cubic curve | the capacitor's curved plate |
| Sine, Half-wave | parameterized smart-paths (amplitude, cycles) for AC/tone-source art |
| Text | labels — string, anchor, font size, style (regular / bold / italic / condensed) |
| Bitmap | a 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.
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.
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:
2-terminal parts are vertical — Resistor, Inductor, Capacitor, sources, Term, Ground: port 1 at top
(0,-200), port 2 at bottom(0,+200). Place them rotated 90° in a horizontal signal path (the normal workflow).Multi-terminal boxes/devices are horizontal — FET, ZPort, SDD, and the auto-generated box use left/right ports.
Tools & editing
| # | Button | What it does |
|---|---|---|
| 1 | Zoom to Fit (F) | |
| 2 | Select / Move (S) | |
| 3 | Line — click and drag | |
| 4 | Polyline — click points; Enter or double-click to finish | |
| 5 | Rectangle — drag corner to corner | |
| 6 | Rounded Rectangle — drag corner to corner | |
| 7 | Circle — drag from centre | |
| 8 | Ellipse — drag bounding box | |
| 9 | Arc — drag from centre; 270° sweep | |
| 10 | Triangle — click 3 points (auto-commits) | |
| 11 | Polygon — click points; Enter or double-click to close | |
| 12 | Quadratic Bézier — click start, control, end (3 points) | |
| 13 | Cubic Bézier — click start, ctrl1, ctrl2, end (4 points) | |
| 14 | Sine wave — drag to set length and amplitude | |
| 15 | Exponential taper — drag to set length and start width | |
| 16 | Text — click anchor, type, Enter to place | |
| 17 | Pin — click empty space to place; use Select tool to move, delete, or rotate pins (P) | |
| 18 | Insert Bitmap… | |
| 19 | Snap: Fine Grid (G) | |
| 20 | Rotate Selection 90° CW about origin (R) | |
| 21 | — | Stroke: |
| 22 | Normal stroke weight | |
| 23 | Thin stroke weight | |
| 24 | Thick stroke weight | |
| 25 | Undo (⌘Z / Ctrl+Z) | |
| 26 | Redo (⌘⇧Z / Ctrl+Shift+Z) |
The toolbar is grouped by what you are doing, and the groups are worth learning as groups:
- View — Zoom to Fit is the one you will press most; a symbol is small and the canvas is not.
- Select — the tool everything returns to. Press
S, orEsctwice. - Straight and curved outlines — Line and Polyline for the strokes a symbol is mostly made of; Quadratic and Cubic Bézier when a hand-shaped curve is what the part looks like.
- Closed shapes — Rectangle, Rounded Rectangle, Circle, Ellipse, Arc, Triangle, Polygon. Reach for these for the body of a device rather than drawing four lines.
- The two RF shapes — a Sine wave and an Exponential taper, because a coupler and a taper are drawn far more often in this application than in a general drawing tool.
- Text and pins — the Text tool for labels, the Pin tool for the things that actually connect. A symbol with no pins is a picture.
- Bitmap — for tracing over a datasheet outline; see the note on locking one below.
- Snap and rotate — the same snap ladder the schematic uses, and rotation about the origin, which is what keeps a pin on grid.
- Stroke weight — thin, normal, thick, applied to the selection or to what you draw next.
- Undo / Redo — on the symbol's own stack.
Gestures:
Two-point drag — Line, Rect, Rounded Rect, Circle, Ellipse, Arc, Sine, Half-wave.
Multi-point click — Polyline, Polygon, Triangle, Quad/Cubic curve (Enter or double-click to commit).
Text — click an anchor, type, Enter to commit.
Esc — cancels the gesture in progress, or clears the selection when idle.
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.