- 1. How to read this specification
- 2. Document structure
- 3. Value types & formatting
- 4. Coordinate frames, units & angles
- 5. Identifiers, references & list ordering
- 6. Object state flags
- 7. Plug-in exchange & import merge
- 8. Cross-cutting: font-size fields
- 9. <SheetSettings> — page setup and title blocks
- 10. <Settings> — global project settings
- 11. <NetClasses> / <NetClass>
- 12. <DesignCache>
- 13. <ERC>
- 14. <Components> / <Part>
- 15. <Nets> / <Net>
- 16. <DifferentialPairs> / <DifferentialPair>
- 17. <Buses> / <Bus> and <BusConnectors> / <BusConnector>
- 18. <Shapes> / <Shape>
- 19. <Tables> / <Table> / <Cell>
- 20. <Simulator> — SPICE setup
- 21. <Groups> / <Group>
DipTrace Schematic Capture — XML Format Specification
Generated from the DipTrace serializer, repository revision 7276 — reflects current program behaviour.
1. How to read this specification
This document describes the DipTrace Schematic Capture flavour of
the DipTrace XML format — the same format used both for
File ▸ Save/Open As ▸ DipTrace XML and for the plug‑in exchange file.
It is generated directly from the DipTrace serializer and reflects what
the program actually reads and writes.
Each element is given with a short description, a representative XML
fragment, and a table of its attributes. The Written column states
the condition under which the serializer emits the attribute (always,
a guard such as if >-1, or a context such as Text shapes only); an
attribute left at its default is usually omitted, so a missing attribute
means use the default, not zero.
2. Document structure
A schematic project is a single <Source> root holding the embedded
design‑cache library and the editable schematic:
<Source Type="DipTrace-Schematic" Version="4.3.0.x" Units="mm">
<Library Type="DipTrace-ComponentLibrary" ...>...</Library> <!-- design cache -->
<Schematic> ... </Schematic> <!-- the editable project -->
</Source>
The editable schematic data lives under <Schematic> (a plug‑in's data
node is /Source/Schematic); the sibling <Library> is the project's
design cache and nests the footprint (pattern) library.
3. Value types & formatting
| Type | Encoding |
|---|---|
Int |
A plain decimal integer. |
Real |
A decimal number expressed in the file's Units, written with a dot decimal separator. The reader is tolerant (it normalises both dot and comma), but the dot is canonical and is what other tools expect. |
Bool |
Y / N. (A few Schematic simulator fields use + / -.) |
Text |
A string attribute or element text. |
Color |
A 24‑bit integer in Windows 0x00BBGGRR order (e.g. 255 = red). |
| enum | A fixed set of text (or, in a few cases, integer) values, listed with the element. |
4. Coordinate frames, units & angles
- The document root carries
Units="mm" | "inch" | "mil". EveryRealcoordinate, length and size in the file is in those units; there is no per‑object override. - Objects inside a library symbol or footprint (pins, pads, shapes) are stored in an object‑centre frame — coordinates are relative to the part/footprint origin and are not affected by where an instance is placed.
- Angles are in radians, counter‑clockwise, unless an attribute is
explicitly a discrete orientation enum (e.g. a footprint
Orientationof0/90/180/270). - Coordinate scaling and sign are internal to the file; read and write values as they are — do not rescale or flip them.
5. Identifiers, references & list ordering
- Most list elements carry an
Id(orIndex/Number) that other objects reference. A reference value of-1means none / not connected. - A few lists are referenced positionally, not by an
Idattribute: aViaStylevalue indexes the in‑order<ViaStyles>list and aNetClassvalue indexes the in‑order<NetClasses>list. Reordering those lists silently reassigns the references. - When a whole file is opened, top‑level object lists are resolved by
position: each array must be dense, ascending from
Id0, with position equal toId. A file authored out of order or with gaps will bind references to the wrong objects.
6. Object state flags
| Attribute | Type | Meaning |
|---|---|---|
Selected |
Bool | User selection state. |
Locked |
Bool | Edit lock. |
Group |
Int | Group Id, or -1 for none; groups are listed in a <Groups> section. |
Enabled |
Bool | Exists / removed. A normal save prunes disabled objects, so a saved file rarely shows Enabled="N"; on the plug‑in exchange / edit‑import path, however, Enabled="N" is honoured as a delete flag on the editable objects. An absent flag means enabled. |
7. Plug-in exchange & import merge
The same format is the plug-in exchange file: DipTrace exports the selected data, launches the plug-in with the file path as its argument, waits for it to exit, then re-imports the (possibly edited) file. How the result merges back depends on the import mode:
- Whole-list (
ImpMode=All) — the incoming list replaces the project's list of that object kind; anything omitted is removed. Edit— each top-level object is matched to an existing one by itsIdand overwritten in place; an object with a new or absentIdis added. Keep an object'sIdto edit it, and omit theIdon objects you add — never invent one, because over a partial export a computed “free” Id can collide with an unexported object and overwrite it.
Nested lists without their own
Idare REPLACED, not merged. A net's<Traces>, a net's or bus's<Wires>, and point lists have no per-memberId. When such a container is present in your XML, DipTrace discards the existing list and rebuilds it from exactly the children you supply — so appending one trace under an existing net replaces that net's entire routing. To add one member, re-list every current member plus the new one; to leave the list untouched, omit the container element entirely.The
Selectedfilter skips — it does not add. When a plug-in runs with aSelectedfilter underEdit, only objects flaggedSelected="Y"are processed at all: a marked object with an existingIdis edited, a marked object with a newIdis added, and an unflagged object is skipped entirely (neither edited nor added). PutSelected="Y"on every object you add or edit under such a filter, or its data is silently dropped.
To remove an object, set Enabled="N" on it and leave it in the file
(see Object state flags) — do not delete the XML node. Component and
Pattern library files use coarser Library / Component / Part import
modes rather than per-object Edit, but the Enabled delete flag and
the Id rules still apply.
A note on completeness. Where a newer serializer field has no counterpart in an older published table (for example the real‑valued/mono font fields, or per‑object shield‑group ids), it is documented here as a first‑class attribute. Preserve attributes and elements you do not recognise when editing a file in place — they belong to other subsystems and to future format versions.
8. Cross-cutting: font-size fields
Every text-bearing element in the Schematic dialect carries a legacy
rounded integer font size and a fractional companion. On import the
fractional value overrides the rounded integer whenever it is present,
so a reader that wants exact sizes must prefer the …Float attribute.
| Attribute | Type | Written | Description |
|---|---|---|---|
FontSize / Font / FontSizeFloat |
Int / Real | always (as a pair) | The integer is the rounded legacy size; FontSizeFloat holds the true fractional size and wins on import. Written on <BorderZones>, <Field>, <Markings>, <BusConnections>, <PinNumbers>, <NetName>, a text <Shape>, <Table>, and <Cell>. |
MarkingFontSize / MarkingFontSizeFloat |
Int / Real | always (as a pair) | Same pairing for a <Part>'s marking font; the …Float twin carries the fractional value. |
FontMono |
Bool (Y/N) | vector font only | Written only when the object uses the internal vector font (FontVector="Y"); selects the monospaced vector face. Absent for TrueType text. |
TextWidth / TextHeight |
Real | export-only | Computed bounding size of the text (via GetTextWH), emitted for informational use on <Field>, text <Shape>, and <Cell>. Recomputed on import — never read back; treat as read-only. |
Note. The fractional/mono font family is written throughout the document but does not replace the integer fields — both are always present so older readers keep working. When authoring XML, set the
…Floatvalue; the rounded integer is derived.
9. <SheetSettings> — page setup and title blocks
Holds the sheet list and per-sheet page geometry, border zones, and up
to six title blocks. Objects across the schematic reference a sheet by
its Id.
<SheetSettings>
<DisplayTitles>Y</DisplayTitles>
<DisplaySheet>Y</DisplaySheet>
<ActiveSheet>0</ActiveSheet>
<Sheets>
<Sheet>
<Id>0</Id> <Name>Sheet1</Name> <Type>Normal</Type>
<XPos>0</XPos> <YPos>0</YPos> <Scale>1</Scale>
<SheetWidth>297</SheetWidth> <SheetHeight>210</SheetHeight>
<LeftMargin>5</LeftMargin> <TopMargin>5</TopMargin>
<RightMargin>5</RightMargin> <BottomMargin>5</BottomMargin>
<BorderZones>…</BorderZones>
</Sheet>
</Sheets>
</SheetSettings>
Header children: DisplayTitles and DisplaySheet (Bool) toggle
title-block / sheet-border display; ActiveSheet (Int) is the currently
shown sheet index.
9.1. <Sheet>
| Attribute | Type | Written | Description |
|---|---|---|---|
Id |
Int | always | Sheet index; objects reference it by Sheet="N". |
Name |
Text | always | Sheet name. |
Type |
enum | always | 0=Normal, 1=Hierarchy Block. |
BlockId |
Int | if Type is Hierarchy Block | Links this child sheet to the hierarchy-block part that expands into it (see the note below); omitted entirely for a normal sheet. |
XPos / YPos |
Real | always | Sheet origin (Y is negated on write). |
Scale |
Real | always | Display scale. |
SheetWidth / SheetHeight |
Real | always | Page size in file Units. |
LeftMargin / TopMargin / RightMargin / BottomMargin |
Real | always | Printable margins. |
Hierarchy blocks. A hierarchical design links a block part (a
<Part>of part type 4, carrying aBlockId) to the child<Sheet>that expands it. The link is the matchingBlockIdvalue written on both sides — a content link that is independent of the positionalSheet Idthat ordinary objects use throughSheet="N". Do not conflate the two: a sheet'sIdis its page index, itsBlockIdis its block identity. If aBlockIddoes not resolve on import, DipTrace falls back to matching the block to its sheet by name.
9.2. <BorderZones> and the six title blocks
Written only in a full save (not per-object plug-in exports).
<BorderZones> carries the zone-grid setup: Visible,
HorzZones/VertZones (Int), Standard, FontName,
FontSize/FontSizeFloat, FontLineWidth (Real), Border (Bool), and
HorzBorderSize/VertBorderSize (Real). The six title blocks are
separate elements: <BottomRightBlock>, <BottomLeftBlock>,
<TopRightBlock>, <TopLeftBlock>, <ExtTopLeftBlock>,
<ExtBottomLeftBlock>.
<BottomRightBlock Width="180" Height="55">
<Name>ANSI A</Name>
<ColumnWidths><Item>40</Item>…</ColumnWidths>
<RowHeights><Item>10</Item>…</RowHeights>
<Cells><Item><Item FieldId="0" TopLine="Y" BottomLine="Y" LeftLine="Y" RightLine="Y"/>…</Item></Cells>
<Fields>
<Field Id="0" FontVector="N" FontSize="10" FontSizeFloat="10" FontWidth="-2"
FontScale="1" FontColor="0" LineSpacing="1.2" TextShow="Text" TextAlign="Left"
X1="0" Y1="0" X2="40" Y2="10" TextWidth="18" TextHeight="4">
<TextLines><TextLine>Title</TextLine></TextLines>
<FontName>Tahoma</FontName>
</Field>
</Fields>
</BottomRightBlock>
Note. A title block is omitted when its
Nameis blank, andColumnWidths/RowHeights/Cells/Fieldsare omitted when empty — all optional. A<Field>emitsFontMonoonly whenFontVector="Y", andTextWidth/TextHeightonly for a plain text field (TextShow="Text").
10. <Settings> — global project settings
Global fonts, grid, origin, line widths, bus-connection display, pin numbers, and the net-label font. Emitted as a block of child elements.
<Settings>
<Markings FontVector="Y" FontMono="N" FontSize="10" FontSizeFloat="10"
FontWidth="-2" FontScale="1" UsePartFontColor="N" FontColor="0">
<RefDesGlobal Show="Common" ShowPart="Common" Align="Auto"/>
<NameGlobal …/> <ValueGlobal …/> <ManufacturerGlobal …/> <DatasheetGlobal …/>
</Markings>
<Grid Visible="Y" Snap="Y" Size="2.5"/>
<Origin Visible="N" AxisColor="0" X="0" Y="0"/>
<LineWidth Wire="0.25" NodeSize="1" Bus="0.5" Table="0.25" Titles="0.25"/>
<BusConnections Show="NetName" Position="Above" FontSize="8" FontSizeFloat="8"/>
<PinNumbers Visible="Y" Font="8" FontSizeFloat="8"/>
<NetName FontSize="8" FontSizeFloat="8"/>
<HidePower>N</HidePower>
<ProjectDir>…</ProjectDir>
</Settings>
<Markings> holds the shared component-marking font (FontVector,
FontMono in the vector branch, FontName in the TrueType branch, plus
FontSize/FontSizeFloat/FontWidth/FontScale/UsePartFontColor/FontColor)
and per-field show/align children <RefDesGlobal>, <NameGlobal>,
<ValueGlobal>, <ManufacturerGlobal>, <DatasheetGlobal>, and an
optional <AddFieldsGlobal> list.
| Element / Attr | Type | Written | Description |
|---|---|---|---|
<Grid> Visible/Snap/Size |
Bool/Bool/Real | always | Grid display, snapping, spacing. |
<Origin> X/Y/Visible/AxisColor |
Real/Real/Bool/Int | always | User origin position, visibility, axis color. |
<LineWidth> Wire/NodeSize/Bus/Table/Titles |
Real | always | Default widths for wires, junction node size, buses, table lines, title lines. |
<BusConnections> Show/Position/FontSize/FontSizeFloat |
enum/enum/Int/Real | always | Show: NetName/Number; Position: Above/Below; the label font size. |
<PinNumbers> Visible/Font/FontSizeFloat |
Bool/Int/Real | always | Pin-number display and font size. |
<NetName> FontSize/FontSizeFloat |
Int/Real | always | Net-label font size (schematic net names), between <PinNumbers> and <HidePower>. |
<HidePower> |
Bool | always | Hide power/ground pins. |
<ProjectDir> |
Text | always | Project directory. |
11. <NetClasses> / <NetClass>
The project's net classes, written in order. The diff-pair rule attributes appear only for a Differential Pair class.
<NetClasses>
<NetClass Id="0" UpdateId="0" Type="Normal" Width="0.25" Clearance="0.25">
<Name>Default</Name>
</NetClass>
<NetClass Id="1" UpdateId="3" Type="Differential Pair" Width="0.2" Clearance="0.2"
DifClearance="0.2" MaxUncoupledLength="5" Tolerance="0.1" Phase="0" Phase_ErrorLength="0">
<Name>DiffPair</Name>
</NetClass>
</NetClasses>
| Attribute | Type | Written | Description |
|---|---|---|---|
Id |
Int | always | In-order index of the class (equals its list position). |
UpdateId |
Int | always | Cross-link id for update against the PCB. |
Type |
enum | always | 0=Normal, 1=Differential Pair. |
Width |
Real | if >-1 | Default trace width. |
Clearance |
Real | if >-1 | Default clearance. |
DifClearance |
Real | Diff Pair, if >-1 | In-pair clearance. |
MaxUncoupledLength |
Real | Diff Pair only | Max uncoupled length. |
Tolerance |
Real | Diff Pair only | Length-match tolerance. |
Phase |
Real | Diff Pair only | Phase-match target. |
Phase_ErrorLength |
Real | Diff Pair only | Phase error length. |
<Name> |
Text | always | Class name (child element). |
Note. A net selects its class with
NetClass="N", a positional index into this in-order list. On a native saveIdequals that position, so the two agree; reordering<NetClass>entries silently reassigns classes.
12. <DesignCache>
Records how many leading components in the embedded <Library> are
design-cache entries.
<DesignCache Count="3"/>
| Attribute | Type | Written | Description |
|---|---|---|---|
Count |
Int | always | Number of leading design-cache components (stored as the internal cache count plus one). |
13. <ERC>
Electrical-rules-check flags and the power/ground name templates.
<ERC CheckPinType="Y" CheckNotConnected="Y" CheckSinglePin="Y" CheckShort="Y" CheckPinSuperimpose="Y">
<VCCTemplate>VCC;+*</VCCTemplate>
<GNDTemplate>GND;0</GNDTemplate>
</ERC>
| Attribute | Type | Written | Description |
|---|---|---|---|
CheckPinType |
Bool | always | Check pin-type conflicts. |
CheckNotConnected |
Bool | always | Check not-connected pins. |
CheckSinglePin |
Bool | always | Check single-pin nets. |
CheckShort |
Bool | always | Check shorts. |
CheckPinSuperimpose |
Bool | always | Check superimposed pins. |
<VCCTemplate> / <GNDTemplate> |
Text | always | Power / ground net-name templates (child elements). |
14. <Components> / <Part>
One <Part> per placed part/section; several parts of a multi-part
component share a RefDes. ComponentStyle points to a symbol in the
embedded library and ComponentPart selects the section within it.
<Part Id="0" UpdateId="2221" ComponentStyle="CompType229" ComponentPart="0" AllowParts="N"
PartNumber="1" Sheet="4" X="83.82" Y="-43.815" Angle="4.7124"
MarkingFontSize="10" MarkingFontSizeFloat="10">
<RefDes>C1</RefDes> <PartRefDes>1</PartRefDes> <PartName>Part 1</PartName>
<Value>(1608)</Value> <Name>CAP_1608(0603)</Name> <BaseName>CAP</BaseName>
<Manufacturer>Yageo</Manufacturer> <Datasheet>http://…</Datasheet>
<LibPath><Path>…</Path><Var>…</Var></LibPath>
<RefDesMarking Show="Common" Align="Auto" Horz="Left" Vert="Top" X="0" Y="0" Angle="0"/>
<NameMarking …/> <ValueMarking …/> <ManufacturerMarking …/> <DatasheetMarking …/>
<Pins><Pin NetId="0"/><Pin NetId="-1" NotConnected="Y"/></Pins>
</Part>
| Attribute | Type | Written | Description |
|---|---|---|---|
Id |
Int | always | Part id; net pin items reference it. |
UpdateId |
Int | always | Cross-link id to the PCB component. |
BlockId |
Int | hierarchy-block part only | Hierarchy-block link (part type 4); matches the BlockId of the child <Sheet> it expands into. |
ComponentStyle |
Text | if library entry resolved | Symbol name in the embedded library. |
ComponentPart |
Int | always | Section index within that symbol. |
AllowParts |
Bool | always | Whether the component is split into parts/sections. |
PartNumber |
Int | always | This part's number within the component. |
Sheet |
Int | always | Owning sheet Id. |
X / Y |
Real | always | Placement (Y negated on write). |
Angle |
Real | if ≠0 | Rotation, radians CCW. |
HorzFlip / VertFlip |
Bool | if flipped | Mirror flags (only Y is written). |
ShowNumbers |
enum | if >0 | 0=Common, 1=Show, 2=Hide. |
ShowOrigin |
Bool | if set | Show the part origin. |
CustomMarkingFont |
Bool | if set | Part overrides the global marking font. |
MarkingFontSize / MarkingFontSizeFloat |
Int / Real | always | Marking font size (float twin wins on import). |
MarkingFontAll |
Bool | if set | Apply the marking font to all fields. |
Group |
Int | if >-1 | Group id, else omitted. |
Selected / Locked |
Bool | if set | Editor flags (only Y written). |
Value elements (child text, all always written): <RefDes>,
<PartRefDes>, <PartName>, <Value>, <Name>, <BaseName> (the
component base name), <Manufacturer> (the manufacturer value, distinct
from the display-only <ManufacturerMarking>), and <Datasheet> (the
datasheet value, distinct from <DatasheetMarking>). Followed by
<LibPath>, the five marking-display blocks (<RefDesMarking> …
<DatasheetMarking>, each with
Show/ShowPart/Align/Horz/Vert/X/Y/Angle), an optional
<AddFields> list, the <Pins> list, and an optional <Category>.
14.1. <Pins> (of a Part)
The part's pins in symbol pin order; nets reference a pin by this positional index.
| Attribute | Type | Written | Description |
|---|---|---|---|
NetId |
Int | always | Connected net Id, or -1 for none. |
NotConnected |
Bool | if set | Explicitly marked not-connected (only Y written). |
Note. A normal save never writes
Enabledon a<Part>— disabled parts are pruned. Since rev 7272 the plug-in importer honorsEnabled="N"on a<Part>as a delete flag (see the closing note under<Groups>).
15. <Nets> / <Net>
Each net lists its pin memberships and its wires. Boolean flags are
written only when set (as Y), except Enabled, which is written as
N for a deleted net.
<Net Id="0" NetClass="0" HiddenId="0" Global="Y" CustomColor="Y" WireColor="255">
<Name>AP-WAKE-BT</Name>
<Pins><Item Part="596" Pin="0"/><Item Part="347" Pin="2"/></Pins>
<Wires>
<Wire Id="0" Sheet="1" Connected1="Pin" Bus1="-1" Object1="709" SubObject1="0"
Connected2="Wire" Bus2="-1" Object2="3" SubObject2="1"
HiddenPower="N" CanUnhide="N">
<Points><Point X="-1.27" Y="-13.97" Dir="-1"/><Point X="0" Y="-13.97" Dir="0"/></Points>
</Wire>
</Wires>
</Net>
| Attribute | Type | Written | Description |
|---|---|---|---|
Id |
Int | always | Net id; referenced by pins, shapes, buses, diff pairs. |
NetClass |
Int | always | Positional index into <NetClasses>. |
HiddenId |
Int | always | Internal stable id used across merge/update. |
UniteByName |
Bool | if set | Unite same-named nets. |
ConnectPinByName |
Bool | if set | Connect pins by name. |
Global |
Bool | if set | Global net. |
CustomColor |
Bool | if set | Use a custom wire color; when set, WireColor follows. |
WireColor |
Int | if custom & ≠0 | Custom wire color. |
Locked |
Bool | if set | Locked. |
Enabled |
Bool | N only, for a deleted net |
The one object that genuinely emits Enabled="N" (delete flag). Never written when enabled. |
<Name> |
Text | always | Net name (child element). |
<Pins> holds <Item Part="…" Pin="…"/> — the part Id plus the pin's
positional index in that part.
15.1. <Wire> / <Point>
| Attribute | Type | Written | Description |
|---|---|---|---|
Id |
Int | always | Wire id within the net. |
Sheet |
Int | always | Owning sheet. |
Connected1 / Connected2 |
enum | always | Endpoint kind — see enum below. |
Bus1 / Bus2 |
Int | always | Connected bus Id when the endpoint is a bus, else -1. |
Object1 / Object2 |
Int | always | Endpoint target: Pin→part Id; Wire→another wire Id in the net; Bus→bus-wire Id. |
SubObject1 / SubObject2 |
Int | always | Pin→pin index in the part; Wire/Bus→point index in that wire. |
HiddenPower |
Bool | always | Hidden power/ground wire. |
CanUnhide |
Bool | always | Whether a hidden wire may be unhidden. |
Arrows |
enum | if >0 | 0=None, 1=Forward, 2=Backward. |
Group |
Int | if >-1 | Group id. |
Selected |
Bool | if set | Editor flag. |
| Value | Name |
|---|---|
0 |
Pin |
1 |
Wire |
2 |
2 (net-junction placeholder) |
3 |
Bus |
4 |
Free |
Each <Point> carries X/Y (Real, Y negated) and Dir (Int): -1
unset, 0 horizontal, 1 vertical — the direction is stored on the
segment's second point; the first point's Dir is ignored.
16. <DifferentialPairs> / <DifferentialPair>
Pairs the positive and negative nets of a differential pair.
<DifferentialPairs>
<DifferentialPair Id="0" PosNet="4" NegNet="5" NetClass="1" CustomColor="Y" WireColor="16711680">
<Name>USB_D</Name>
</DifferentialPair>
</DifferentialPairs>
| Attribute | Type | Written | Description |
|---|---|---|---|
Id |
Int | always | Pair index (load-bearing on merge/exchange import). |
PosNet / NegNet |
Int | always | Positive / negative net Id. |
NetClass |
Int | always | Positional net-class index. |
CustomColor |
Bool | if set | Use a custom color; when set, WireColor follows. |
WireColor |
Int | if custom | Custom wire color. |
<Name> |
Text | always | Pair name (child element). |
Note.
Enabledis not produced for a diff pair — the export loop is gated on the enabled flag, so a disabled pair is pruned (no element). The presence of the element itself is the "enabled" signal. The reader still acceptsEnabledon hand-authored XML.
17. <Buses> / <Bus> and <BusConnectors> / <BusConnector>
A bus lists its member nets and its bus wires. Bus connectors are the named ports that join a bus to nets.
<Buses>
<Bus Id="0">
<Name>DATA</Name>
<Nets><Net NetId="4" ConnectionNumber="0"/><Net NetId="5" ConnectionNumber="1"/></Nets>
<Wires>
<Wire Id="0" Sheet="1" Connected1="Bus Connector" Bus1="-1" Object1="2" SubObject1="0"
Connected2="Bus Wire" Bus2="-1" Object2="1" SubObject2="0">
<Points><Point X="10" Y="-20" Dir="-1"/>…</Points>
</Wire>
</Wires>
</Bus>
</Buses>
<BusConnectors>
<BusConnector Id="0" Sheet="1" X="10" Y="-20" Connected="Y"><Name>DATA</Name></BusConnector>
</BusConnectors>
17.1. <Bus>
| Attribute | Type | Written | Description |
|---|---|---|---|
Id |
Int | always | Bus id. |
Locked |
Bool | if set | Locked. |
Enabled |
Bool | — | Not emitted by a native save (loop gated on enabled). Reader-accepted delete flag. |
<Name> |
Text | always | Bus name (child element). |
<Nets> holds <Net NetId="…" ConnectionNumber="…"/> (member net Id
and its ordinal in the bus). <Wires> holds bus <Wire>s with the same
connection model as net wires (Id, Sheet, Connected1/2, Bus1/2,
Object1/2, SubObject1/2, optional Group/Selected) and
<Points>. Bus-wire endpoint kinds: 2=Bus Wire, 4=Bus Connector,
all other values render as Free.
17.2. <BusConnector>
| Attribute | Type | Written | Description |
|---|---|---|---|
Id |
Int | always | Connector id. |
Sheet |
Int | always | Owning sheet. |
X / Y |
Real | always | Position (Y negated). |
Connected |
Bool | always | Whether the connector is attached to a bus. |
Enabled |
Bool | — | Not emitted by a native save (loop gated on enabled). Reader-accepted delete flag. |
Group |
Int | if >-1 | Group id. |
Selected / Locked |
Bool | if set | Editor flags. |
<Name> |
Text | always | Port name (child element). |
18. <Shapes> / <Shape>
Free graphics and text. Attribute set varies by Type: line-style
attributes for outlines/fills, picture attributes for pictures, and the
full font family for text.
<Shape Id="0" Type="Rectangle" Sheet="0" LineWidth="0.25" Color="9079434" Selected="N">
<Points><Point X="86.995" Y="21.59"/><Point X="120" Y="40"/></Points>
</Shape>
<Shape Id="1" Type="Text" Sheet="0" Angle="0" HorzAlign="Left" VertAlign="Top" TextAlign="Left"
FontVector="Y" FontMono="N" FontSize="10" FontSizeFloat="10" FontWidth="-2" FontScale="1"
FontColor="0" LineSpacing="1.2" TextWidth="18" TextHeight="4">
<Points><Point X="10" Y="-5"/></Points>
<FontName>Tahoma</FontName>
<TextLines><TextLine>Power</TextLine></TextLines>
</Shape>
| Attribute | Type | Written | Description |
|---|---|---|---|
Id |
Int | always | Shape index. |
Type |
enum | always | See enum below. |
Sheet |
Int | always | Owning sheet. |
LineWidth |
Real | all types except Text and Picture, if >-1 | Outline width — written for fills too (FillRect, FillObround). |
Color |
Int | all types except Text and Picture | Line/fill color. |
NetId |
Int | Text shapes, if ≥0 | Bound net (net-name label). |
BusId |
Int | Text shapes, if ≥0 | Bound bus (bus label). |
Angle |
Real | Text and Picture | Text/picture rotation. |
PictureWidth / PictureHeight |
Real | Picture only | Picture size. |
PictureProportions |
Bool | Picture only | Keep aspect ratio. |
PictureFlipped |
Bool | Picture only | Picture mirrored. |
PictureTransparent |
Int | Picture only | Transparent-color value. |
HorzAlign / VertAlign |
enum | Text and Picture | Anchor alignment (Left/Center/Right; Top/Center/Bottom). |
TextAlign |
enum | Text only | Paragraph alignment. |
FontVector |
Bool | Text only | Vector vs TrueType font; FontMono follows when Y. |
FontSize / FontSizeFloat |
Int / Real | Text only | Font size (float twin wins on import). |
FontWidth / FontScale / FontColor / LineSpacing |
Real/Real/Int/Real | Text only | Stroke width, scale, color, line spacing. |
TextWidth / TextHeight |
Real | Text only, if has lines | Computed text extent (informational). |
Group |
Int | if >-1 | Group id. |
Selected / Locked |
Bool | if set | Editor flags. |
| Value | Name |
|---|---|
0 |
None |
1 |
Line |
2 |
Arc |
3 |
Arrow |
4 |
Rectangle |
5 |
FillRect |
6 |
Obround |
7 |
FillObround |
8 |
Polyline |
9 |
Polygon |
10 |
Text |
11 |
Picture |
Child elements: <Points>/<Point X Y> (geometry). A Text shape also
writes <FontName> and a <TextLines>/<TextLine> list; a Picture
shape writes a <PictureFile> (<Path>/<Var>).
Note.
LineWidthandColorare written for filled shapes (FillRect, FillObround) too — the only exclusions are Text and Picture.Enabledis not emitted (disabled shapes are pruned); the reader accepts it as a delete flag.
19. <Tables> / <Table> / <Cell>
Free / BOM tables. Table-level attributes carry the default cell font; each cell can override it.
<Table Id="0" Sheet="1" X1="10" Y1="-10" X2="90" Y2="-40" Orientation="0"
CellWidth="20" CellHeight="6" TextAlign="Left" FontVector="Y" FontMono="N"
FontSize="8" FontSizeFloat="8" FontWidth="-2" FontScale="1" FontColor="0" LineSpacing="1.2">
<FontName>Tahoma</FontName> <Name>BOM</Name>
<ColWidths><Item>20</Item>…</ColWidths>
<RowHeights><Item>6</Item>…</RowHeights>
<Cells>
<Cell>
<Cell X1="10" Y1="-10" X2="30" Y2="-16" TextAlign="Left" FontVector="Y" FontMono="N"
FontSize="8" FontSizeFloat="8" FontWidth="-2" FontScale="1" FontColor="0"
LineSpacing="1.2" TextWidth="12" TextHeight="4">
<FontName>Tahoma</FontName>
<TextLines><TextLine>RefDes</TextLine></TextLines>
</Cell>
</Cell>
</Cells>
</Table>
| Attribute | Type | Written | Description |
|---|---|---|---|
Id |
Int | always | Table index. |
Sheet |
Int | always | Owning sheet. |
HideBorder |
Bool | if set | Suppress the outer border. |
X1/Y1/X2/Y2 |
Real | always | Table rectangle (Y negated). |
Orientation |
enum | always | 0/1/2/3 = 0/90/180/270. |
CellWidth / CellHeight |
Real | always | Default cell size. |
TextAlign |
enum | always | Default cell alignment (Left/Center/Right). |
FontVector / FontMono |
Bool | always / vector only | Default cell font kind; FontMono only when vector. |
FontSize / FontSizeFloat |
Int / Real | always | Default cell font size. |
FontWidth / FontScale / FontColor / LineSpacing |
Real/Real/Int/Real | always | Default cell font metrics. |
Group |
Int | if >-1 | Group id. |
Selected / Locked |
Bool | if set | Editor flags. |
<FontName> / <Name> |
Text | always | Default font family; table name. |
Cells are written as a <Cells> list of rows, each row a <Cell>
containing the row's <Cell> entries. A cell carries its own rectangle
(X1/Y1/X2/Y2), TextAlign, the full font family (FontVector,
FontMono when vector,
FontSize/FontSizeFloat/FontWidth/FontScale/FontColor/LineSpacing,
<FontName>), and, when it has text, TextWidth/TextHeight plus a
<TextLines>/<TextLine> list.
Note. The row and cell wrappers share the tag name
<Cell>— the outer level is a row, the inner level a cell.Enabledis not emitted (disabled tables are pruned); the reader accepts it as a delete flag.
20. <Simulator> — SPICE setup
Written only when the project has simulation data. Carries the analysis type, plotted signals, per-analysis parameter blocks, a digital-simulation block, and four SPICE solver-options blocks.
<Simulator Type="Transient" GndNetId="0">
<Signals>
<Signal Type="Voltage" Id="4" Plotted="Y" Visible="Y" Color="255">
<DisplayName>V(out)</DisplayName>
</Signal>
</Signals>
<Transient><StartTime>0</StartTime><Step>1u</Step><StopTime>1m</StopTime></Transient>
<Digital><StartTime>0</StartTime><Step>1n</Step><StopTime>1u</StopTime><GroupBuses>Y</GroupBuses></Digital>
<OptionsGeneral NoPrintStat="N" NoPrintModelParams="N"><Temp>27</Temp><TempNomMeasure>27</TempNomMeasure></OptionsGeneral>
<OptionsDC ConductanceSteps="0" SkipConductanceStepping="N" Iteration="100" TransferCurveIteration="50" StartFromConductanceStepping="N">…</OptionsDC>
<OptionsAC NoOPAnalysis="N"/>
<OptionsTransient LowIteration="0" PointIteration="10" TotalIteration="5000" SourceStepping="0" MethodMaxOrder="2" Method="1">…</OptionsTransient>
<GndNetName>GND</GndNetName>
</Simulator>
| Attribute | Type | Written | Description |
|---|---|---|---|
Type |
enum | always | Analysis type — see enum below. |
GndNetId |
Int | always | Ground net Id (-1 for none). |
| Value | Name |
|---|---|
1 |
Small-Signal AC |
2 |
DC Transfer Function |
4 |
Noise |
9 |
Transient |
10 |
Digital |
11 |
Options |
Child blocks (each written when it has data): <Signals> of
<Signal Type Id Plotted Visible Color> with a <DisplayName> (Type:
0=Current, 1=Voltage); <SmallSignalAC>, <DCTransferFunc>,
<Transient>, <Noise> parameter blocks; and <Digital>
(<StartTime>/<Step>/<StopTime>/<GroupBuses>).
20.1. SPICE solver-options blocks
Four blocks written unconditionally within <Simulator>, carrying the
numeric SPICE options as text/attribute values.
<OptionsGeneral>:NoPrintStat,NoPrintModelParams(Bool attrs);<Temp>,<TempNomMeasure>(text).<OptionsDC>: attrsConductanceSteps,SkipConductanceStepping,Iteration,TransferCurveIteration,StartFromConductanceStepping; text children<AbsCurrentTolerance>,<MinConductance>,<PivotRation>,<PivotTolerance>,<RelativeError>,<GroundResistor>,<VoltageError>.<OptionsAC>:NoOPAnalysis(Bool attr).<OptionsTransient>: attrsLowIteration,PointIteration,TotalIteration,SourceStepping,MethodMaxOrder,Method(0=unknown,1=default/Trapezoidal,2=Gear); text children<ChargeTolerance>,<SourceSteppingChange>,<ErrorTolerance>,<TrapezoidalDampingFactor>.
The block closes with a <GndNetName> text element.
21. <Groups> / <Group>
Registry of object groups.
<Groups>
<Group Id="0" Selected="N"/>
<Group Id="1" Enabled="N"/>
</Groups>
| Attribute | Type | Written | Description |
|---|---|---|---|
Id |
Int | always | Group id; objects reference it via Group. |
Enabled |
Bool | N only, for a deleted group |
Written as N when the group is removed; otherwise omitted. |
Selected |
Bool | if set | Editor flag (only Y written). |
Note.
Enabledacross the dialect.Enabled="N"is the import/exchange delete flag, honored by the plug-in importer for nets, shapes, tables, buses, bus connectors, differential pairs, groups, and parts. On a native save it is genuinely emitted only for a deleted<Net>and a deleted<Group>; for shapes, tables, buses, bus connectors, diff pairs, and parts the disabled object is simply pruned (no element), so a writtenEnabled="N"comes only from hand-authored or plug-in XML. Wires carry noEnabledat all — remove a wire by dropping it from its net's<Wires>list (the list is subtree-replaced when present), or remove the whole net with its wires viaEnabled="N"on the<Net>.