Line Types
Every piece of geometry is drawn with a line type — either one of the built-in patterns or a custom linetype defined in TOML. Line types can be set in two places:
- Per layer — the Line type dropdown in the layer panel applies to all geometry on the layer (see Layers).
- Per geometry — the Linetype dropdown in the properties panel overrides the layer setting for the selected geometry. Choosing Default in the layer dropdown lets each geometry use its own setting.
Built-in line types
Continuous (the default), Dashed, Dotted, Dash-Dot, Dash-Dot-Dot, Center, Hidden, and Phantom.
Custom line types
Nullcad ships a default library of survey-oriented linetypes (Boundary,
Easement, Traverse, Wire Fence, Water, Gas, Sewer, and more) and lets you
define your own in a TOML file. Custom linetypes can include text and
symbols repeated along the line — e.g. a water main drawn as
———— W ———— W ————.
- Import:
File -> Import -> Linetypes (TOML). If an imported name matches an existing linetype, a conflict dialog asks whether to overwrite the existing definition or skip the incoming one. Overwriting keeps existing geometry pointing at the updated definition. - Export:
File -> Export -> Linetypes (TOML)writes the document’s custom linetypes to a file you can share or re-import elsewhere.
Custom linetypes are stored in the document itself (and in templates), so a drawing always carries the definitions it uses.
The TOML format
[linetypes.myline] # Required namespace; the key must be unique
name = "My Line" # Required; shown in the linetype dropdowns
description = "A test linetype" # Optional, shown alongside the name
pattern = [ # Required: the repeating pattern
{ stroke = 3.0 }, # Visible dash, 3 mm long
{ gap = 2.0 }, # Invisible break, 2 mm long
{ text = "E", font_size = 2.5 },
{ symbol = "M -1 -1 L 1 1", scale = 1.0 },
]
A file can contain any number of [linetypes.<key>] tables. The pattern
list repeats along the whole length of the line.
All dimensions are in millimetres of paper at 1:1, scaled on screen and
in output by the current linetype scale — a 3.0 stroke
prints 3 mm long at 1:1, 3 m ground at 1:1000.
Pattern elements
Each entry in pattern is one of five element types, chosen by which keys
it contains:
| Element | Keys | Notes |
|---|---|---|
| Stroke | stroke | Visible dash; the value is its length in mm. |
| Gap | gap | Invisible break; the value is its length in mm. |
| Dot | dot = true | A point marker occupying 0.5 mm of pattern. |
| Text | text, font_size, rotation | Text along the line. font_size is in mm (default 2.5); rotation is in degrees relative to the line direction (default 0). |
| Symbol | symbol, scale, rotation, keep_stroke | A small vector shape (see below). scale defaults to 1.0, rotation to 0. |
Only the keys shown are recognised — e.g. scale on a text element is
silently ignored; use font_size.
Symbols
The symbol value is a path in a small subset of SVG path syntax —
straight lines only:
M x y— move to (absolute)L x y— line to (absolute)m dx dy— move to (relative)l dx dy— line to (relative)
Numbers are whitespace-separated; commas are not accepted — write
"M -1 -1 L 1 1", not "M -1, -1, L 1, 1". Curves and arcs are not
supported. Coordinates are in symbol units around the line: the path is
multiplied by scale, so at scale = 1.0 a coordinate of 1 is 1 mm from
the line. Some examples:
{ symbol = "M -1 -1 L 1 1" } # single tick /
{ symbol = "M -1 -1 L 1 1 M -1 1 L 1 -1" } # X marker
{ symbol = "M -1 -1 L 1 -1 L 1 1 L -1 1 L -1 -1" } # square
By default a symbol replaces a section of the line: it occupies a slot
2 × scale mm wide, punched out of the pattern like a gap. Set
keep_stroke = true to instead draw the symbol on top of a continuous
line without consuming any pattern length — right for tick marks along an
unbroken line, as in the default Building linetype:
[linetypes.building]
name = "Building"
pattern = [
{ stroke = 3.0 },
{ symbol = "M 0 0 L 1 1", scale = 1.0, keep_stroke = true },
]
Linetype scale
Pattern dimensions are paper units, so how large they appear depends on the
linetype scale, set per survey phase from
the 1:… indicator in the status bar:
- Manual — type a scale denominator (e.g.
1:500). Pick the scale you intend to plot at and the plotted pattern matches its definition in mm. - Link to zoom — the scale is recomputed from the current zoom level and your screen PPI (Settings › Display), so patterns keep a constant on-screen size as you zoom. The status bar shows a link icon while active.
Troubleshooting
- “No linetypes found in file” — the file has no
[linetypes.<key>]tables; check the namespace spelling. - Import fails with a parse error — the console (
View -> Console) reports the offending line. Common causes: a missingpattern, a missingname, or commas inside asymbolpath. - Pattern looks solid or invisible — the linetype scale for the current phase is too small or too large for the geometry; adjust it from the status bar.