Altium ".SchDoc" files use the OLE compound document format. Inside the OLE container are streams (embedded files). The main stream contains schematic object records. Each record is a collection of properties, encoded as ASCII or byte strings.
Contents:
- OLE compound document
- Property list
- Data types: Integer, Colour, Real, Boolean, Line width
- Object records
- 0: Header
- 1: Component
- 2: Pin
- 3: IEEE Symbol
- 4: Label
- 5: Bezier
- 6: Polyline
- 7: Polygon
- 8: Ellipse
- 9: Piechart
- 10: Round rectangle
- 11: Elliptical arc
- 12: Arc
- 13: Line
- 14: Rectangle
- 15: Sheet symbol
- 16: Sheet entry
- 17: Power port
- 18: Port
- 22: No ERC
- 25: Net label
- 26: Bus
- 27: Wire
- 28: Text frame
- 29: Junction
- 30: Image
- 31: Sheet
- 32, 33: Sheet name and file name
- 34: Designator
- 37: Bus entry
- 39: Template
- 41: Parameter
- 43: Warning sign
- 44: Implementation list
- 45: Implementation
- 46
- 47
- 48
- 215–218
- 226
Related references:
- The Upverter universal format converter, https://github.com/upverter/schematic-file-converter
- Protel 99 SE PCB ASCII file format reference, http://www.eurointech.ru/products/Altium/Protel99SE_PCB_ASCII_File_Format.pdf
- Jacek Pluciński, Protel schematic ASCII library to G EDA importer (togedasym), https://web.archive.org/web/20120908065943/http://jacek-tools.110mb.com/
The OLE root directory lists up to three streams: FileHeader, Storage, and Additional. The schematic data is in the FileHeader stream.
The Storage stream has a similar header to FileHeader's header,
except that the text is |HEADER=Icon storage
. It contains embedded files
for Image objects.
The Additional stream is not always present. It has the same header as FileHeader, and it seems any extra records belong after the sequence of records from the FileHeader stream.
Each stream seems to be a sequence of object records. Pluciński calls them primitives; Protel calls specific PCB objects either primitives or group objects. Upverter calls them parts.
Record format:
- Length of the payload: (little endian encoding, 2 bytes)
- 0 (1 byte)
- Record type (1 byte)
If the record type is 0, it is a property list, followed by a null terminator byte. Records in the Storage stream, after the initial header record, have type 1, and the following format:
- 0xD0 (1 byte)
- Filename length (1 byte)
- Filename
- Compressed size (little-endian encoding, 4 bytes)
- zlib-compressed data (including a zlib header)
Properties (so called by Upverter and Protel) within a property list
are separated by a pipe “|
” character.
For most records the list starts with pipe character as well
(except for RECORD=28).
Most property names are in all capitals,
with words run together without underscores or any other punctuation.
Exceptions include
|DISPLAY_UNIT
for sheet objects, and some properties for co-ordinates.
Property names are probably case-insensitive.
Sometimes properties are repeated, such as |HOTSPOTGRIDON=T
in the
Sheet record.
Some simple common data types represented by properties:
- Strings: Most properties are directly decodable as ASCII strings. Non-ASCII strings often use Windows CP-1252 or some similar encoding, and are often accompanied by another property encoded in UTF-8.
- Co-ordinate pairs (points):
|LOCATION.X=200|LOCATION.Y=100
- Lists:
|FONTIDCOUNT=2|SIZE1=10|FONTNAME1=
. . .|SIZE2=10|FONTNAME2=
. . . - Co-ordinate lists:
|LOCATIONCOUNT=2|X1=100|Y1=100|X2=200|Y2=100
- TRotateBy90: An enumerated integer type. Default is 0 (rightwards).
The origin (0, 0) is at the bottom left corner, and the y values
increase from bottom to top. Sizes and locations are in units of
1/100″ = 10 mils = 0.254 mm. Each dimension or co-ordinate is usually given
as an integer property. Sometimes a second integer property with a
_FRAC
suffix is also given, maybe measured as a fraction of 100,000 units.
Decimal integers: |RECORD=31
, |OWNERPARTID=-1
.
Default value if property is missing seems to be 0.
- Enumerated types:
|RECORD=1
/2
/. . .,|RECORD=17|STYLE=1
/2
/. . . - Bitfields:
|COLOR=8388608
(= 0x800000),|PINCONGLOMERATE=58
(= 0x3A)
RGB colours: |COLOR=128|AREACOLOR=11599871
(= #800000, #FFFFB0).
Inherited from Delphi TColor data type.
- Bits 0–7, mask 0x0000FF: Red
- Bits 8–15, mask 0x00FF00: Green
- Bits 16–23, mask 0xFF0000: Blue
Decimal numbers with a fractional part: |ENDANGLE=360.000
, encoding angles.
Typically three decimal places. Property omitted when the value is zero.
|ISHIDDEN=T|PARTIDLOCKED=F
. When false, the property is often omitted,
rather than explicitly set to F
.
|LINEWIDTH
- Omitted: 4 mil
- 1: 10 mil
- 2: 20 mil
- 3: 40 mil
Each item in the FileHeader stream describes an object.
The first object is a Header object.
All subsequent objects are indexed starting from zero. The type of
each object is identified by its |RECORD
property.
Indexed objects have a hierarchical ownership relationship with each other, and are stored in depth-first order. The object at index zero directly follows the header object, and is a Sheet object.
If a property is given with a value below, that documents that it has only ever been seen with that particular value.
This object does not have a |RECORD
property, but could be interpreted
as being equivalent to setting |RECORD=0
.
|HEADER=Protel for Windows - Schematic Capture Binary File Version 5.0
|WEIGHT
(integer): number of remaining objects|MINORVERSION=2|UNIQUEID
: Optional
|RECORD=1
: Set up schematic component part.
Other objects, such as lines, pins and labels exist,
which are “owned” by the component.
The component object seems to occur before any of its child objects.
|LIBREFERENCE
|COMPONENTDESCRIPTION|%UTF8%COMPONENTDESCRIPTION|COMPONENTKIND=3
: Each optional|PARTCOUNT
(integer): Number of separated parts within component (e.g. there might be four parts in a quad op-amp component). The value seems to be one more than you would expect, so 2 implies a normal component, and the quad op-amp would have 5.|DISPLAYMODECOUNT
(integer): Number of alternative symbols for part|INDEXINSHEET
: Integer|OWNERPARTID=-1|LOCATION.X|LOCATION.Y
|DISPLAYMODE
(integer): Objects belonging to this part should only be displayed if their|OWNERPARTDISPLAYMODE
property matches.|ISMIRRORED=T|ORIENTATION
: Optional|CURRENTPARTID
(integer): Objects belonging to this part with|OWNERPARTID
set to a different number (other than −1) should probably be ignored, otherwise each part of a quad op amp will probably display four op-amps (sixteen total)|LIBRARYPATH
: Optional|SOURCELIBRARYNAME
|SHEETPARTFILENAME=*
: Optional|TARGETFILENAME|UNIQUEID
|AREACOLOR=11599871|COLOR=128
(= #FFFFB0, #800000)|PARTIDLOCKED|DESIGNATORLOCKED
: Boolean|NOTUSEDBTABLENAME|DESIGNITEMID|DATABASETABLENAME|ALIASLIST
: Optional|PINSMOVEABLE
: Boolean
|RECORD=2
: Component pin, including line, name and number
|OWNERINDEX
: Component part index|OWNERPARTID
: See Component|CURRENTPARTID
|OWNERPARTDISPLAYMODE|DESCRIPTION
: Optional|SYMBOL_OUTER
(integer):- 0: No symbol
- 33
|SYMBOL_OUTEREDGE
(integer): Optional symbol between component and pin- 0: No symbol
- 1: A bubble (dot), indicating negative logic
|SYMBOL_INNEREDGE
(integer): Optional symbol touching inside edge of component- 0: No symbol
- 3: Clock input; arrow pointing inwards
|FORMALTYPE=1
|ELECTRICAL
(integer): Signal type on pin- 0 (default): Input. Arrow pointing into component.
- 1: Input and output (bidirectional). Diamond.
- 2: Output. Arrow (triangle) pointing out of component
- 3: Open collector
- 4: Passive. No symbol.
- 5: Hi-Z (tri-state?)
- 6: Open emitter
- 7: Power. No symbol.
|PINCONGLOMERATE
: Bit mapped integer:- Bits 0–1, mask 0x03: TRotateBy90: Pin orientation:
- 0: Rightwards (0°)
- 1: Upwards (90°)
- 2: Leftwards (180°)
- 3: Downwards (270°)
- Bit 3, mask 0x08: Pin name shown
- Bit 4, mask 0x10: Designator shown
- Bits 0–1, mask 0x03: TRotateBy90: Pin orientation:
|PINLENGTH
: Integer|LOCATION.X|LOCATION.Y
: Point where pin line extends from component|NAME
: Pin function, shown inside component, opposite the pin line. May not be present even if the flag is set in|PINCONGLOMERATE
.|NAME_CUSTOMFONTID=4
|NAME_CUSTOMPOSITION_MARGIN=-2
: Default is −7|PINNAME_POSITIONCONGLOMERATE
(integer): 0, 16 or 21|DESIGNATOR
: Pin “number”, shown outside component, against pin line|DESIGNATOR_CUSTOMPOSITION_MARGIN=5
: Default is +9|PINDESIGNATOR_POSITIONCONGLOMERATE
(integer): 0, 1 or 16|SWAPIDPIN
: Optional|SWAPIDPART|%UTF8%SWAPIDPART
(optional): Seen containing broken bars (U+00A6, ¦), the non-UTF-8 encoding of one being the single byte 0x8E
|RECORD=3
: Located near some component pins
|COLOR=255|LOCATION.X|LOCATION.Y
|SYMBOL
: 3, 4, 10, 17 or 19|ISNOTACCESIBLE=T
|SCALEFACTOR
: 4, 6, or 8|OWNERPARTID|OWNERPARTDISPLAYMODE
: See Component|CURRENTPARTID
and|DISPLAYMODE
|RECORD=4
: Text note
|OWNERINDEX
: Component part index|ISNOTACCESIBLE
: Boolean|INDEXINSHEET
: Integer|OWNERPARTID
: See Component|CURRENTPARTID
|LOCATION.X|LOCATION.Y|COLOR
|ISMIRRORED
: Boolean|ORIENTATION=2
: Orientation 2 with justification 8 fixes the bottom left corner of the text (otherwise justification 8 would be top-right)|JUSTIFICATION
(integer):- 0: Bottom left
- 1: Bottom center
- 2: Bottom right
- 3: CenterLeft
- 4: CenterCenter
- 5: CenterRight
- 6: TopLeft
- 7: TopCenter
- 8: TopRight
|FONTID
(integer): Selects from the font table in the Sheet object|TEXT
: Optional if not displayed due to being the wrong current component part. If it begins with an equals sign (=), the rest references a Parameter object, of the parent or grandparent, with a matching|NAME
. Parameter values for=CurrentDate
,=CurrentTime
and=DocumentFullPathAndName
are automatically generated and not taken from the Parameter object.|GRAPHICALLYLOCKED
(boolean): “Locked” field in Altium
|RECORD=5
: Bezier curve for component symbol
|OWNERINDEX|ISNOTACCESIBLE|OWNERPARTID
|LINEWIDTH|COLOR
|LOCATIONCOUNT=4|X1|Y1|X2|Y2|X3|Y3|X4|Y4
: Control points; shares common data structure with Polyline etc
|RECORD=6
: Polyline for component symbol
|OWNERINDEX
: Component part index|ISNOTACCESIBLE
: Boolean|INDEXINSHEET
: Integer|OWNERPARTID
: See Component|CURRENTPARTID
|OWNERPARTDISPLAYMODE
: See Component|DISPLAYMODE
|LINEWIDTH
|COLOR
|LOCATIONCOUNT|X
n|Y
n|
. . .: May also include_FRAC
counterparts|STARTLINESHAPE|ENDLINESHAPE
(Integers): In general, the shapes are wider than the line.- Omitted: No special shape
- 1: Arrowhead with thin barbs
- 2: Solid fat arrowhead
- 3: Thin arrow tail
- 4: Solid fat arrow tail
- 5: Solid circle
- 6: Solid square
|LINESHAPESIZE
: Integer- Omitted: Extra small
- 1: Small
- 2: Medium
- 3: Large
|RECORD=7
: Polygon for component symbol
|OWNERINDEX|ISNOTACCESIBLE=T
|INDEXINSHEET
: Integer|OWNERPARTID|OWNERPARTDISPLAYMODE
: See Component|CURRENTPARTID
and|DISPLAYMODE
|LINEWIDTH
|COLOR|AREACOLOR|ISSOLID
|LOCATIONCOUNT|X
n|X
n_FRAC|Y
nY
n_FRAC|
. . .|EXTRALOCATIONCOUNT|E(X/Y)<n>[_FRAC]
: Seen withLOCATIONCOUNT=50
, where this gives an extra count, and the extra points are numbered from 51 to 50 + n|IGNOREONLOAD
: Boolean
|RECORD=8
: Inherits Circle properties
|RADIUS|RADIUS_FRAC
: Radius in x direction|SECONDARYRADIUS|SECONDARYRADIUS_FRAC
: Radius in y direction|COLOR|AREACOLOR|ISSOLID
|INDEXINSHEET
: Integer|LINEWIDTH
|OWNERINDEX|ISNOTACCESIBLE=T|OWNERPARTID=1|LOCATION.X|LOCATION.Y
|RECORD=9
|RECORD=10
: As for Rectangle; additionally:
|CORNERXRADIUS[_FRAC]|CORNERYRADIUS[_FRAC]
|RECORD=11
: Inherits Arc properties
|SECONDARYRADIUS|SECONDARYRADIUS_FRAC
: Radius along y axis;|RADIUS
is along x axis
|RECORD=12
: Circle or arc for component symbol. The angles are
physical angles measured on the final ellipse. To calculate the
corresponding angles in a circle, before it would be scaled to the ellipse’s
aspect ratio:
circ_angle = atan2( RADIUS * sin(angle), SECONDARYRADIUS * cos(angle) )
|OWNERINDEX
: Component part index|ISNOTACCESIBLE=T
|INDEXINSHEET
: Integer|OWNERPARTID
: See Component|CURRENTPARTID
|OWNERPARTDISPLAYMODE
: See Component|DISPLAYMODE
|LOCATION.X|LOCATION.Y
: Centre of circle|RADIUS|RADIUS_FRAC
: Integers|LINEWIDTH
|STARTANGLE
(real): Default 0; 0 for full circle|ENDANGLE
(real): 360 for full circle. Setting both to zero may also specify a full circle.|COLOR
|RECORD=13
: Line for component symbol
|OWNERINDEX
: Component part index|ISNOTACCESIBLE=T
|INDEXINSHEET
: Integer|OWNERPARTID=1
|OWNERPARTDISPLAYMODE
: See Component|DISPLAYMODE
|LOCATION.X|LOCATION.Y|CORNER.X|CORNER.Y
: Endpoints of the line|LINEWIDTH
: Line thickness|COLOR
|RECORD=14
: Rectangle for component symbol
|OWNERINDEX
: Component part index|ISNOTACCESIBLE
(boolean): Non-English spelling of “accessible”!|INDEXINSHEET
: Integer|OWNERPARTID
: See Component|CURRENTPARTID
|OWNERPARTDISPLAYMODE
: Optional|LOCATION.X|LOCATION.Y
: Bottom left corner|CORNER.X[_FRAC]|CORNER.Y[_FRAC]
: Top right corner|LINEWIDTH
|COLOR
: Outline colour|AREACOLOR
: Fill colour|ISSOLID
(boolean): If false, rectangle is not filled in, despite|AREACOLOR
.|TRANSPARENT
(boolean): Seen this and|ISSOLID=T
both set, and the rectangle object covering already-drawn objects, so in this case the rectangle should probably not obscure other objects
|RECORD=15
: Box to go on a top-level schematic
|INDEXINSHEET
: Integer|OWNERPARTID=-1
|LOCATION.X|LOCATION.Y
: Top left corner (not bottom left like other objects!)|XSIZE|YSIZE
: Positive integers|COLOR|AREACOLOR|ISSOLID=T|UNIQUEID
|SYMBOLTYPE=Normal
: Optional
Child of Sheet symbol. In SchDoc files you will first see a RECORD=15 which defines a sheet symbol. That record is directly followed by multiple RECORD=16 entries which define the sheet entries for the previously defined sheet symbol.
|RECORD=16
: Sheet entries of boxes on a top-level schematic. Corresponds to a port object inside the sheet.
|AREACOLOR=8454143|ARROWKIND=Block & Triangle|COLOR=128
|DISTANCEFROMTOP
(integer): Distance from top-left coordinate. If SIDE==0/1 Y-Coordinate, else X-Coordinate in x10 units. DISTANCEFROMTOP=10 ==> 100 in Altium.|DISTANCEFROMTOP_FRAC1
(integer): Fractional distance from top-left coordinate. If SIDE==0/1 Y-Coordinate, else X-Coordinate in x0.00001 units. DISTANCEFROMTOP_FRAC1=500000 ==> 5 in Altium.|NAME
(ASCII): Name of the sheet entry.|OWNERPARTID=-1
|OWNERINDEX=1234
(integer): Link to parent element. Value directly references zero-oriented implicit number of record in SchDoc file. Use dump.py to see these numbers.|TEXTCOLOR=128|TEXTFONTID=1|TEXTSTYLE=Full|INDEXINSHEET
|HARNESSTYPE
(ASCII): Name of the Harness type. Omitted if normal signal.|SIDE
(integer): Optional. Indicates on which side of the sheet symbol the entry resides. 0 (or ommitted): Left, 1: Right, 2: Top, 3: Bottom.|STYLE
(integer): Usually 2 or 3. Corresponds to "Style" ListBox in "Sheet Entry" dialog.|IOTYPE
(integer): Optional. Indicates signal flow direction. 0 (or omitted): Undefined, 1: Output, 2: Input, 3: Bidirectional.
|RECORD=17
: Connection to power rail, ground, etc
|INDEXINSHEET
: Integer|OWNERPARTID=-1
|STYLE
: Marker symbol:- 0: Default, if
|ISCROSSSHEETCONNECTOR=T
- Circle (?)
- 1: Arrow
- 2: Tee off rail (bar)
- Wave (?)
- 4: Ground (broken triangle, made of horizontal lines)
- 5: Used on ground connections
- Power ground, earth ground, earth (?)
- 7: Used on power connections
- 0: Default, if
|SHOWNETNAME
(boolean): Show the|TEXT
value|LOCATION.X|LOCATION.Y
: Point of connection|ORIENTATION
(integer): TRotateBy90: Direction the marker points|COLOR
|TEXT
: Shown beyond the marker|ISCROSSSHEETCONNECTOR
(boolean): Marker symbol is a double chevron pointing towards the connection.|UNIQUEID
: Optional|FONTID
(integer): If omitted (zero), maybe use the default (|SYSTEMFONT
)
|RECORD=18
: Labelled connection
|INDEXINSHEET
: Integer|OWNERPARTID=-1
|STYLE
(integer):- 3: Extends from the specified location towards the right
- 7: Upwards (rotated CW, then translated!)
|IOTYPE
(integer):- 0: The label’s left edge is flat and its right edge is angled
- 3: The label has angled points on both ends
|ALIGNMENT
(integer): (Opposite for upwards style)- 0: ?
- 1: Text is right-aligned
- 2: Left-aligned
|WIDTH
: Integer|LOCATION.X|LOCATION.Y
|COLOR
|AREACOLOR=8454143
(= #FFFF80)|TEXTCOLOR
|NAME
(ASCII): A backslash indicates a bar over the preceding character. The whole string may also be prefixed with a backslash; every character is still suffixed with one.|UNIQUEID
|FONTID
(integer): If omitted (zero), maybe use the default (|SYSTEMFONT
)|HEIGHT=10|HARNESSTYPE=Inter-board_Connector
: Optional
|RECORD=22
: Cross indicating intentional non-connection
|INDEXINSHEET
: Integer|OWNERPARTID=-1|LOCATION.X|LOCATION.Y
|COLOR
|ISACTIVE=T|ORIENTATION=1|SUPPRESSALL=T|SYMBOL=Thin Cross|UNIQUEID
: Optional
|RECORD=25
: Net label
|INDEXINSHEET
: Integer|OWNERPARTID=-1
|LOCATION.X|LOCATION.Y
: Point of net connection|COLOR
|FONTID
|TEXT
: As for Port|ORIENTATION
(integer):- 0: Text is aligned at the bottom-left corner
- 1: Bottom-left alignment, then rotated 90° anticlockwise
- 3: Bottom-left alignment, then rotated 90° clockwise
|UNIQUEID
: Optional
|RECORD=26
: Bus polyline
|INDEXINSHEET
: Integer|OWNERPARTID=-1
|LINEWIDTH|COLOR
|LOCATIONCOUNT|X
n|Y
n|
. . .
|RECORD=27
: Wire connection polyline
|INDEXINSHEET
: Integer|OWNERPARTID=-1|LINEWIDTH|COLOR
|LOCATIONCOUNT|X
n|Y
n|
. . .|UNIQUEID
: Optional
RECORD=28
: Text box. Also RECORD=209
.
|OWNERPARTID
|LOCATION.X
: Lefthand side of box|LOCATION.Y
|CORNER.X[_FRAC]
: Righthand boundary for word wrapping|CORNER.Y[_FRAC]
: Top text line|AREACOLOR=16777215
(= #FFFFFF)|FONTID|ALIGNMENT=1|WORDWRAP=T|COLOR
|ISSOLID|CLIPTORECT|ISNOTACCESIBLE
: Boolean|ORIENTATION|TEXTMARGIN_FRAC|INDEXINSHEET
: Optional|TEXT
: Special code “~1
” starts a new line. Property name is often seen in title case:|Text
.|SHOWBORDER=T
: Optional
|RECORD=29
:
Junction of connected pins, wires, etc, sometimes represented by a dot.
It may not be displayed at all, depending on a configuration setting.
|INDEXINSHEET=-1
: Optional|LOCKED
: Boolean|OWNERPARTID=-1
|LOCATION.X|LOCATION.Y
|COLOR
|RECORD=30
|OWNERINDEX=1|INDEXINSHEET|OWNERPARTID=-1
|LOCATION.X|LOCATION.Y
: Bottom-left corner|CORNER.X|CORNER.Y
:_FRAC
counterparts may also be included|EMBEDIMAGE
: Boolean|FILENAME
: File name may be without a path (filename.ext) or an absolute Windows path (C:\path\filename.ext). Suffixes: “.bmp”, “.tif”.|KEEPASPECT
: Boolean
|RECORD=31
: First object after the header object (i.e. at index zero),
with properties for the entire schematic
|FONTIDCOUNT
: Specifies the fonts referenced by|FONTID
|SIZE
n: Line spacing. At least for Times New Roman, the font’s actual point size or em size seems to be about 0.875 of this size. So for|SIZE
n=10
, the total line spacing is 100 mil = 0.10″ = 7.2 pt, but the font’s em size is about 87.5 mil = 0.0875″ = 6.3 pt.|ITALIC
n|BOLD
n|UNDERLINE
n: Boolean|ROTATION
n (integer): 0 or 90. Seems to be associated with sideways vertical text, but the text objects themselves already indicate the orientation.|FONTNAME
n=Times New Roman
|USEMBCS=T|ISBOC=T|HOTSPOTGRIDON=T|HOTSPOTGRIDSIZE
|SHEETSTYLE
(integer): Selects a predefined paper size. The drawing area (size of the grid rectangle) is given below, and tends to be slightly smaller than the corresponding paper size.- 0: A4, 1150 × 760
- 1: A3, 1550 × 1110
- 2: A2, 2230 × 1570
- 3: A1, 3150 × 2230
- 4: A0, 4460 × 3150
- 5: A, 950 × 750
- 6: B, 1500 × 950
- 7: C, 2000 × 1500
- 8: D, 3200 × 2000
- 9: E, 4200 × 3200
- 10: Letter, 1100 × 850
- 11: Legal, 1400 × 850
- 12: Tabloid, 1700 × 1100
- 13: OrCAD A, 990 × 790
- 14: OrCAD B, 1540 × 990
- 15: OrCAD C, 2060 × 1560
- 16: OrCAD D, 3260 × 2060
- 17: OrCAD E, 4280 × 3280
|SYSTEMFONT
(integer): A font number to use as a default, normally 1.|BORDERON=T
|TITLEBLOCKON
(boolean): Enables the rectangle with title, etc, details.|SHEETNUMBERSPACESIZE=4
|AREACOLOR=16317695
(= #FFFCF8): Background of entire drawing area|SNAPGRIDON=T|SNAPGRIDSIZE|VISIBLEGRIDON=T|VISIBLEGRIDSIZE=10
|CUSTOMX|CUSTOMY
: Dimensions of sheet. Should probably ignore this unless|USECUSTOMSHEET=T
provided.|USECUSTOMSHEET
: Boolean|WORKSPACEORIENTATION
(integer): Switches orientation for|SHEETSTYLE
. How does this interact with|USECUSTOMSHEET=T
?- 0: Landscape
- 1: Portrait
|CUSTOMXZONES=6|CUSTOMYZONES=4|CUSTOMMARGINWIDTH=20
|DISPLAY_UNIT
(integer): Units used for displaying distances (?)- 1: Millimetres
- cm, m, autoranging metric
- 4: Units of 1/100″ = 10 mils
- mil, in, autoranging imperial
|REFERENCEZONESON
: Boolean|SHOWTEMPLATEGRAPHICS
: Boolean|TEMPLATEFILENAME
: Optional Windows path
|RECORD=32
(sheet name) / 33
(sheet file name):
Labels on top-level schematic
|OWNERINDEX
|INDEXINSHEET=-1
: Optional|OWNERPARTID=-1
|LOCATION.X|LOCATION.Y|COLOR|FONTID|TEXT
|RECORD=34
: Component designator label
|OWNERINDEX
: Component part index|INDEXINSHEET=-1
: Optional|OWNERPARTID=-1
|LOCATION.X|LOCATION.Y
|COLOR=8388608
(= #000080)|FONTID
|TEXT
: Has a letter appended based on|PARTCOUNT|CURRENTPARTID
of the owner Component|NAME=Designator
|READONLYSTATE
(integer):- 1: Name is read-only?
|ISMIRRORED
: Boolean|ORIENTATION
(integer): Probably the same as for Parameter|ISHIDDEN
(Boolean): if true,|TEXT
is omitted|UNIQUEID
: Optional|OVERRIDENOTAUTOPOSITION
(Boolean): Maybe related to|NOTAUTOPOSITION
in Parameter
|RECORD=37
: Bus entry line
|COLOR=8388608|CORNER.X|CORNER.Y|LINEWIDTH|LOCATION.X|LOCATION.Y|OWNERPARTID=-1
|RECORD=39
: Sheet template, owning custom title block lines and labels
|ISNOTACCESIBLE=T|OWNERPARTID=-1|FILENAME
|RECORD=41
: Label, such as component value. Probably should not
display label if the record is a child of record 48, even if
|ISHIDDEN=T
not specified.
|INDEXINSHEET
: Integer|OWNERINDEX
(integer): May be zero (omitted) for sheet parameters|OWNERPARTID
: See Component|CURRENTPARTID
|LOCATION.X|LOCATION.X_FRAC|LOCATION.Y|LOCATION.Y_FRAC
|ORIENTATION
(integer):- 0: Text is aligned at the bottom-left corner
- 1: Bottom-left alignment, then rotated 90° anticlockwise
- 2: Top-right corner alignment
- 3: Top-right alignment, then rotated 90° anticlockwise
|COLOR
|FONTID
|ISHIDDEN
: Boolean|TEXT
: If omitted, there is no label. Probably encoded in Windows CP-1252, with substitutions like U+03BC (lowercase mu) → U+00B5 (Micro sign). If it starts with “=
”, it names another parameter with the same|OWNERINDEX
, whose|NAME
matches the rest of the text, ignoring any space following the equal sign, and the actual text is taken from the referenced parameter’s|TEXT
property. If no matching parameter is found, the reference name is substituted, except for the equals sign (=) prefix, and the initial letter is capitalized.|NAME
: Optional|%UTF8%TEXT|%UTF8%NAME
: Optional UTF-8-encoded version of the|TEXT
or|NAME
property, which is also included (presumably for compatibility)|READONLYSTATE
: Same as for Designator?|UNIQUEID
: Optional. Eight uppercase letters from A–Y (25 letters), meant to be unique across a whole project (not just a single schematic)|ISMIRRORED|NOTAUTOPOSITION
: Boolean|SHOWNAME=T
: Optional
|RECORD=43
: Warning sign for differential tracks, clock lines, ...
|OWNERPARTID=-1
|LOCATION.X|LOCATION.Y|COLOR
|NAME=DIFFPAIR
: A differential pair of wires|ORIENTATION
(integer):- 0: Text is aligned at the bottom-left corner
- 1: Bottom-left alignment, then rotated 90° anticlockwise
- 2: Top-right corner alignment
|RECORD=44|OWNERINDEX
: Footprint, simulation model, PCB3D model, Ibis model list
|RECORD=45
: Footprint, simulation model, PCB3D model or Ibis model
|OWNERINDEX
|INDEXINSHEET=-1|UNIQUEID
: Optional|DESCRIPTION|USECOMPONENTLIBRARY=T
: Optional|MODELNAME|MODELTYPE=PCBLIB
/SI
/SIM
/PCB3DLib
|DATAFILECOUNT=1|MODELDATAFILEENTITY0|MODELDATAFILEKIND0
: Optional|DATALINKSLOCKED=T|DATABASEDATALINKSLOCKED=T
: Optional|INTEGRATEDMODEL|DATABASEMODEL
: Boolean|ISCURRENT
: Boolean
Child of RECORD=45 (Implementation)
|RECORD=46|OWNERINDEX
|RECORD=47
|OWNERINDEX
|INDEXINSHEET
: Integer|DESINTF|DESIMPCOUNT=1|DESIMP0
: Optional
Child of RECORD=45 (Implementation)
|RECORD=48|OWNERINDEX
Children of Sheet, seen in the Additional stream
|RECORD=215
: Similar to Sheet symbol
|RECORD=216
|RECORD=217
: Similar to Sheet name and file name, also with |OWNERINDEXADDITIONALLIST=T
and optionally |ISHIDDEN=T
|RECORD=218|COLOR=15187117|INDEXINSHEET|LINEWIDTH|LOCATIONCOUNT=2|OWNERPARTID=-1|X1|X2|Y1|Y2
|RECORD=226