File format root nodes

Each table below describes the full tree of one of the pcb-rnd file formats, from the root.

ha:pcb-rnd-board-v*

type:name           value  ver description
ha:pcb-rnd-board-v*            The full, self-contained description of a printed circuit board. This is the root of a board .lht file. The * after the v in the name is an integer which is the format version.
 ha:meta                       Any meta-data that won't directly turn into physical material (e.g. copper).
  board_name        string     User assigned name of the board
  ha:grid                      User interface last grid settings
   offs_x           coord      grid origin: X offset from 0;0
   offs_y           coord      grid origin: Y offset from 0;0
   spacing          coord      distance between two grid points both in X and Y directions
  ha:size                      object size related settings
   x                coord      drawing area size X (width)
   y                coord      drawing area size Y (height)
   isle_area_nm2    double     remove polygon islands smaller than this value, specified in nm^2
   thermal_scale    double     scale all thermals on the board by this factor
  ha:drc                   <5  design rule checker settings for the old DRC
   bloat            coord      Minimum copper spacing
   shrink           coord      Minimum overlap between validly touching copper objects
   min_width        coord      Minimum copper width
   min_silk         coord      Minimum silk width
   min_drill        coord      Minimum drill diameter
   min_ring         coord      Minimum annular ring width
  ha:cursor                    obsolete cursor/view state
   x                coord      last position, X (horizontal)
   y                coord      last position, Y (horizontal)
   zoom             double     last view zoom factor
 ha:layer_stack                physical layer stack information: geometry and properties of physical layers
  li:groups                    ordered list of physical layers from top to bottom
   ha:INTEGER                  a layer group (a physical layer of the board); the ID of the layer group is the integer in the name of the node
    name            string >=6 purpose of layer groups (useful with mechanical/documentation groups
    ha:type                    a flag-list of layer type flag bits
     top            flag       location: top side
     bottom         flag       location: bottom side
     intern         flag       location: internal
     logical        flag       location: logical (not in the actual stackup)
     copper         flag       material: copper
     silk           flag       material: silk
     mask           flag       material: mask
     paste          flag       material: paste
     outline        flag       "material": router path for board outline; normally for the outer contour, sometimes for biggish inner cutouts as well)
     mech           flag       "material": various mechanical fabbing instructions, e.g. slots; the purpose field provides more detail about the use
     doc            flag       "material": documentation, either for the user and for pcb-rnd or both (the purpose field shoudl tell); e.g. assembly documentation for the user, keepout for the user and DRC
     substrate      flag       material: substrate or insulator
    name            string >=6 purpose of layer groups (useful with mechanical/documentation groups
    li:layers                  ordered list of logical layer IDs hosted by this layer group
 ha:font                       font kit: all fonts used on the board (if no font specified, default font will be used)
  ha:FONT-ID                   the full description of a font; the node name is the integer font id or "geda_pcb" for font 0 (for historical reasons); the name is used only to make each node unique, the ID is also a field below ->
 ha:styles                     routing styles hash: collection of all available routing syles
 ha:netlists                   all available netlists
  li:netlist                   the input netlist (as seen in the last netlist import, a.k.a. forward annotation)
   ha:NETNAME                  a network
    li:conn                    list of terminals connected to the network
     diameter       string     refdes-terminal
    ha:attributes          >=5 a hash of attribute key=value pairs
     attrib-key     string     attribute value
  li:netlist_patch             a list of intentional deviations from the input netlist, a.k.a. material for back annotation
   li:net_info                 describe the current state of a net, as seen on the input
    net             string     net name; first item on the list, only once
    term            string     terminal name; zero or more items starting from the second item
   ha:add_conn                 the 'as built' network requires a new connection to be created during the back annotation
    net             string     net name the terminal should be added to
    term            string     terminal name
   ha:del_conn                 the 'as built' network requires an existing connection to be removed during the back annotation
    net             string     net name the terminal should be removed from
    term            string     terminal name
   ha:change_attrib            the 'as built' network requires an attribute to be set or changed
    net             string     net name whose attribute needs to be changed
    key             string     key (name) of the attribute
    val             string     new value of the attribute
 li:conf                       complete pcb-rnd configuration tree ->
 ha:data                       Layers and global objects of the board ->
 ha:attributes                 a hash of attribute key=value pairs
  attrib-key        string     attribute value

li:pcb-rnd-buffer-v*

type:name             value ver description
li:pcb-rnd-buffer-v*        >=6 buffer file containing a whole paste buffer with bound layers
 x                    coord     buffer origin point, X coordinate
 y                    coord     buffer origin point, Y coordinate
 ha:data                        Layers and global objects of the board ->

li:pcb-rnd-conf-v1

type:name           value ver description
li:pcb-rnd-conf-v1            complete pcb-rnd configuration tree
 ha:overwrite                 overwrite values while merging; children: a full or partial config tree
 ha:prepend                   prepend values while merging; children: a full or partial config tree
 ha:append                    append values while merging; children: a full or partial config tree

li:pcb-rnd-font-v1

type:name             value   ver description
li:pcb-rnd-font-v1                font description
 ha:FONT-ID                       the full description of a font; the node name is the integer font id or "geda_pcb" for font 0 (for historical reasons); the name is used only to make each node unique, the ID is also a field below
  cell_height         coord       height of the tallest glyph
  cell_width          coord       width of the widest glyph
  id                  integer     unique font ID within the fontkit; fonts are referenced by ID
  name                string      user specified, user readable font name
  ha:symbols                      a collections of glyphs availbale in the font
   ha:CHARACTER                   Description of a glyph (symbol). Node name is a signel ASCII character or is of format &xx where xx is a hex digit of the ASCII code of the character. Characters that must use the hex version are: codes below 33 or over
                                  126, &, #, {, }, /, :, ;, =, \, :
    height            coord       height of the glyph
    width             coord       width of the glyph
    delta             coord       extra space always inserted after the current symbol, before the next character
    li:objects                    objects that make up the symbol; IDs are per symbol local IDs counted from 0
     ha:line.ID                   round cap line, simplified
      x1              coord       line first endpoint, horizontal offset
      y1              coord       line first endpoint, vertical offset
      x2              coord       line second endpoint, horizontal offset
      y2              coord       line second endpoint, vertical offset
      thickness       coord       width of the line
     ha:simplearc.ID              round cap arc, simplified
      x               coord       center, X coord
      y               coord       center, Y coord
      r               coord       radius (of the centerline of the arc)
      thickness       coord       width of the pen the arc is drawn with
      astart          angle       start angle
      adelta          angle       delta angle
     li:simplepoly.ID             round cap arc, simplified; contains a flat list of coords; each coord pair is an x;y corner of the outline of the polygon (odd indices are x coords, even indices are y coords)

ha:pcb-rnd-log-v*

type:name          value   ver description
ha:pcb-rnd-log-v*              pcb-rnd message log dump
 li:entries                    list of message log entries
  ha:ID                        each entry is identified by an unique unsigned long int ID
   stamp           string      UNIX time stamp of entry creation
   level           integer     log level enum value (see error.h)
   seen            integer     1 if the message got displayed
   str             string      log message

ha:menu

type:name           value  ver description
ha:                            Menu file
 li:mouse                      mouse bindings
  li:left                      actions to execute on left button click
   li:press                    actions to execute on mouse button press when no modifier is pressed
   li:press-shift              actions to execute on mouse button press when shift is pressed
   li:press-ctrl               actions to execute on mouse button press when control is pressed
   li:release                  actions to execute on mouse button release when no modifier is pressed
   li:release-shift            actions to execute on mouse button release when shift is pressed
   li:release-ctrl             actions to execute on mouse button release when control is pressed
  li:middle                    actions to execute on middle button click
   li:press                    actions to execute on mouse button press when no modifier is pressed
   li:press-shift              actions to execute on mouse button press when shift is pressed
   li:press-ctrl               actions to execute on mouse button press when control is pressed
   li:release                  actions to execute on mouse button release when no modifier is pressed
   li:release-shift            actions to execute on mouse button release when shift is pressed
   li:release-ctrl             actions to execute on mouse button release when control is pressed
  li:right                     actions to execute on right button click
   li:press                    actions to execute on mouse button press when no modifier is pressed
   li:press-shift              actions to execute on mouse button press when shift is pressed
   li:press-ctrl               actions to execute on mouse button press when control is pressed
   li:release                  actions to execute on mouse button release when no modifier is pressed
   li:release-shift            actions to execute on mouse button release when shift is pressed
   li:release-ctrl             actions to execute on mouse button release when control is pressed
  li:scroll-up                 actions to execute on scroll wheel scolling up event
   li:press                    actions to execute on mouse button press when no modifier is pressed
   li:press-shift              actions to execute on mouse button press when shift is pressed
   li:press-ctrl               actions to execute on mouse button press when control is pressed
  li:scroll-down               actions to execute on scroll wheel scolling down event
   li:press                    actions to execute on mouse button press when no modifier is pressed
   li:press-shift              actions to execute on mouse button press when shift is pressed
   li:press-ctrl               actions to execute on mouse button press when control is pressed
 li:main_menu                  root of the main pull-down menu system; ordered list of main menus
  ha:MENUNAME                  main menu name, e.g. "File"
   m                string     mnemonic: single character that should be underlined and used as a hot key in the menu name
   li:submenu                  ordered list of menu items for a submenu ->
 li:popups                     collection of popup menus
  ha:POPUPNAME                 popup menu name, e.g. "layer" for layer context menu
   m                string     mnemonic: single character that should be underlined and used as a hot key in the menu name
   li:submenu                  ordered list of menu items for a submenu ->

ha:coraleda-project-v1

type:name              value  ver description
ha:coraleda-project-v1            Project file root. Except for "common", each software package should create a single subtree under the root; the subtree shall be named after the software package
 ha:common                        project settings that should be common to all software packages
  name                 string     long name of the project
  desc                 string     description of the project
  url                  string     homepage of the project
  vcs                  string     main vcs url for the project
  contact              string     author/maintainer contact info
  li:files                        ordered list of source files being used by the project
   ha:NAME                        a project member file
    path               string     path to the file, relative to the project file
    desc               string     description of the file
    type               string     optional: type of the file; one of: "pcb", "schematic", "doc"
  li:libs                         ordered list of libraries the project depends on
   ha:NAME                        a library
    path               string     path to the library, relative to the project file; all files and subdirectories under the root, recursively, are considered part of the library (must not be used together with url)
    url                string     url to the library (must not be used together with path)
    desc               string     description of the library
    type               string     optional: type of the library; one of: "footprint" (for pcb design), "symbol" (for schematic), "sim" (models and subcircuits for e.g. spice simulation)
 li:pcb-rnd-conf-v1               complete pcb-rnd configuration tree ->

li:pcb-rnd-subcircuit-v*

type:name                value  ver description
li:pcb-rnd-subcircuit-v*            footprint file containing a single subcircuit
 ha:subc.ID                     >=3 an instance (full copy) of a subcircuit
  uid                    minuid     UID assigned by the user to track subc history
  ha:attributes                     a hash of attribute key=value pairs
   attrib-key            string     attribute value
  ha:flags                          flag bits of a subcircuit
   found                 flag       If set, this object has been found by FindConnection()
   selected              flag       Set when the object is selected.
   drc                   flag       Set for objects that fail DRC: flag like FOUND flag for DRC checking.
   lock                  flag       Set for locked objects.
   nonetlist             flag       subcircuit is not on the netlist and should not interfere with the netlist
   termname              flag       when set the names of pins are shown.
   floater               flag       subc part can be moved after subc placing
  ha:data                           Layers and global objects of the board ->

li:view-list-v*

type:name       value  ver description
li:view-list-v*            a list of view items (locations and objects to highlight on the board, e.g. for DRC violations)
 ha:view.ID                a view item; ID is a 32 bit signed integer, unique within the view list
  type          string     free form short text for type of the entry; the GUI may group items by type
  title         string     free form short text for the title of the entry; the GUI typically uses this in brief listings
  description   string     free form long text for the detailed description of the entry
  li:bbox       coord      optional: 4 coordinates in x1;y1;x2;y2 order that describes the bounding box of the view in board space coordinates; when available, the preview or go-to will use this for view box
  li:xy         coord      optional: 2 coordinates in x;y order that describes a specific board location
  li:objs.ID               a group of related objects; there should be at most two groups with ID 0 and 1. These objects are often highlighted in red and blue.
   li:id                   objects are specified as a list of object IDs (32 bit integers)

Common subtrees

Each table below describes a subtree that usually does not specify a whole tree (thus they are usually not a valid file on their own). These subtrees are described in a separate table because they are used from multiple other trees.

ha:data

type:name               value    ver description
ha:data                              Layers and global objects of the board
 li:objects                          List of global (non-layer/multi-layer) objects
  ha:padstack_ref.ID             >=4 a padstack reference (instance) placed on the board (e.g. used as a via)
   proto                integer      padstack prototype ID to use, from the parent data's proto list
   x                    coord        place padstack with origin at this horizontal coordinate
   y                    coord        place padstack with origin at this vertical coordinate
   clearance            coord        global clearance; if non-zero, overrides local (per shape) clearance
   rot                  angle        rotation angle in degrees
   xmirror              integer      0 or 1; if 1, mirror all shapes over the x (horizontal) axis (so that y coords are flipped)
   smirror              integer      0 or 1; if 1, mirror the layer stackup: bottom becomes top, top becomes bottom (a.k.a. "place on the other side")
   ha:attributes                     a hash of attribute key=value pairs
    attrib-key          string       attribute value
   ha:flags                          flag bits of a padstack
    found               flag         If set, this object has been found by FindConnection()
    hole                flag         For pins and vias, this flag means that the pin or via is a hole without a copper annulus.
    clearline           flag         For lines and arcs, the line/arc will clear polygons instead of connecting to them.
    selected            flag         Set when the object is selected.
    auto                flag         For lines and vias, indicates that these were created by the autorouter.
    warn                flag         For pins, vias, and pads, set to indicate a warning.
    drc                 flag         Set for objects that fail DRC: flag like FOUND flag for DRC checking.
    lock                flag         Set for locked objects.
    termname            flag         when set the names of pins are shown.
    floater             flag         subc part can be moved after subc placing
   li:thermal                        list of thermal shapes, per layer
    li:LAYERID                       integer layer ID the thermal affects; each word is a boolean flag that is either present on the list or is missing; only one shape may be present
     on                 none         thermal is present on this layer; if not present, all other thermal flags are ignored on this layer
     diag               none         thermal graphics is not axis aligned but diagonal (rotated by 45 degrees)
     round              none         shape: rounded edge fingers
     sharp              none         shape: sharp edge fingers
     solid              none         shape: no thermal relief, solid connection without clearance
     noshape            none     >=6 shape: special: omit copper shape of the padstack on this layer
  ha:via.ID                      <=4 an old via object (loaded as padstack in the new model)
   x                    coord        place padstack with origin at this horizontal coordinate
   y                    coord        place padstack with origin at this vertical coordinate
   thickness            coord        copper shape dimension (diameter)
   clearance            coord        copper clearance around the copper shape
   mask                 coord        mask cutout shape dimension (diameter)
   hole                 coord        drill/hole diameter
   name                 string       optional name attribute
   number               string       for a pin (or to-be-pin) this is the terminal ID
   ha:attributes                     a hash of attribute key=value pairs
    attrib-key          string       attribute value
   ha:flags_pinvia                   flag bits of a pin or via
    found               flag         If set, this object has been found by FindConnection()
    hole                flag         For pins and vias, this flag means that the pin or via is a hole without a copper annulus.
    clearline           flag         For lines and arcs, the line/arc will clear polygons instead of connecting to them.
    selected            flag         Set when the object is selected.
    auto                flag         For lines and vias, indicates that these were created by the autorouter.
    warn                flag         For pins, vias, and pads, set to indicate a warning.
    usetherm            flag         Obsolete, indicates that pins/vias should be drawn with thermal fingers.
    drc                 flag         Set for objects that fail DRC: flag like FOUND flag for DRC checking.
    lock                flag         Set for locked objects.
    nonetlist           flag         subcircuit is not on the netlist and should not interfere with the netlist
    termname            flag         when set the names of pins are shown.
    floater             flag         subc part can be moved after subc placing
    pin                 flag         object is a pin (in an element)
    via                 flag         object is a via
 li:layers                           ordered list of layers; v1 required the order to be top-bottom physically; v1 also required silk layers to be at the end (same resrtictions as in the old .pcb format; only real (non-bound) layers have attributes)
  ha:NAME                            a logical layer
   lid                  integer  >=2 layer ID
   visible              integer  <6  only in real (non-boud) layers: 1 if the layer is visible, 0 if not (UI setting)
   group                integer      only in real (non-boud) layers: "parent" layer group ID
   color                string   >=5 layer color on UI, in #rrggbb format
   stack_offs           integer      only in bound layers: match offset e.g. for internal copper layers
   ha:type                           only for bound layers: try to bind to this type of layer on the host board
    top                 flag         location: top side
    bottom              flag         location: bottom side
    intern              flag         location: internal
    logical             flag         location: logical (not in the actual stackup)
    copper              flag         material: copper
    silk                flag         material: silk
    mask                flag         material: mask
    paste               flag         material: paste
    outline             flag         "material": router path for board outline; normally for the outer contour, sometimes for biggish inner cutouts as well)
    mech                flag         "material": various mechanical fabbing instructions, e.g. slots; the purpose field provides more detail about the use
    doc                 flag         "material": documentation, either for the user and for pcb-rnd or both (the purpose field shoudl tell); e.g. assembly documentation for the user, keepout for the user and DRC
    substrate           flag         material: substrate or insulator
   purpose              integer  >=6 only in bound layers: match layer group purpose
   combining                     >=2 layer combination (compositing) flags
    sub                 flag         draw in negative
    auto                flag         padstacks draw their paste, mask and silk objects on the first layer (of matching type) that features the auto flag
   ha:attributes                     a hash of attribute key=value pairs
    attrib-key          string       attribute value
   li:objects                        list of drawing primitives put on this layer
    ha:line.ID                       round cap line
     x1                 coord        line first endpoint, horizontal offset
     y1                 coord        line first endpoint, vertical offset
     x2                 coord        line second endpoint, horizontal offset
     y2                 coord        line second endpoint, vertical offset
     thickness          coord        width of the line
     clearance          coord        copper clearance around the object
     ha:attributes                   a hash of attribute key=value pairs
      attrib-key        string       attribute value
     ha:flags                        flag bits of a line
      found             flag         If set, this object has been found by FindConnection()
      clearline         flag         For lines and arcs, the line/arc will clear polygons instead of connecting to them.
      selected          flag         Set when the object is selected.
      auto              flag         For lines and vias, indicates that these were created by the autorouter.
      rubberend         flag         For lines, used internally for rubber band moves: indicates one end already rubber banding.
      drc               flag         Set for objects that fail DRC: flag like FOUND flag for DRC checking.
      lock              flag         Set for locked objects.
      termname          flag         when set the names of pins are shown.
      floater           flag         subc part can be moved after subc placing
     li:thermal                      list of thermal flags for heavy terminals, on the single layer the object is on
      on                none         draw any thermal only if this string is present; else normal clearance is applied
      diag              none         if present, the thermal is diagonal (45 degree rotated)
      round             none         if present, thermal shape is rounded
      sharp             none         if present, thermal shape is sharp
      solid             none         if present, there is no thermal but a solid connection ("join")
    ha:arc.ID                        round cap elliptic arc (only width==height is fully supported at the moment)
     x                  coord        center, X coord
     y                  coord        center, Y coord
     width              coord        radius (of the centerline of the arc) in X direction
     height             coord        radius (of the centerline of the arc) in Y direction
     thickness          coord        width of the pen the arc is drawn with
     clearance          coord        copper clearance around the object
     astart             angle        start angle
     adelta             angle        delta angle
     ha:attributes                   a hash of attribute key=value pairs
      attrib-key        string       attribute value
     ha:flags                        flag bits of a arc
      found             flag         If set, this object has been found by FindConnection()
      clearline         flag         For lines and arcs, the line/arc will clear polygons instead of connecting to them.
      selected          flag         Set when the object is selected.
      auto              flag         For lines and vias, indicates that these were created by the autorouter.
      rubberend         flag         For lines, used internally for rubber band moves: indicates one end already rubber banding.
      drc               flag         Set for objects that fail DRC: flag like FOUND flag for DRC checking.
      lock              flag         Set for locked objects.
      termname          flag         when set the names of pins are shown.
      floater           flag         subc part can be moved after subc placing
     li:thermal                      list of thermal flags for heavy terminals, on the single layer the object is on
      on                none         draw any thermal only if this string is present; else normal clearance is applied
      diag              none         if present, the thermal is diagonal (45 degree rotated)
      round             none         if present, thermal shape is rounded
      sharp             none         if present, thermal shape is sharp
      solid             none         if present, there is no thermal but a solid connection ("join")
    ha:polygon.ID                    polygon, as drawn (unclipped)
     clearance          coord    >=3 copper clearance around the object
     ha:attributes                   a hash of attribute key=value pairs
      attrib-key        string       attribute value
     ha:flags                        flag bits of a polygon
      found             flag         If set, this object has been found by FindConnection()
      clearpoly         flag         For polygons, this flag means that pins and vias will normally clear these polygons (thus, thermals are required for electrical connection). When clear, polygons will solidly connect to pins and vias.
      fullpoly          flag         For polygons, the full polygon is drawn (i.e. all parts instead of only the biggest one).
      selected          flag         Set when the object is selected.
      drc               flag         Set for objects that fail DRC: flag like FOUND flag for DRC checking.
      lock              flag         Set for locked objects.
      termname          flag         when set the names of pins are shown.
      clearpolypoly     flag         For polygons, apply clearance to nearby polygons
      floater           flag         subc part can be moved after subc placing
     li:thermal                      list of thermal flags for heavy terminals, on the single layer the object is on
      on                none         draw any thermal only if this string is present; else normal clearance is applied
      diag              none         if present, the thermal is diagonal (45 degree rotated)
      round             none         if present, thermal shape is rounded
      sharp             none         if present, thermal shape is sharp
      solid             none         if present, there is no thermal but a solid connection ("join")
     li:geometry                     first item is the outer contour, subsequent, optional items are holes
      contour           coordtbl     2 column table of x;y coords for the outer contour
      hole              coordtbl     2 column table of x;y coords for a hole
    ha:text.ID                       single line text object
     x                  coord        placement: X coord
     y                  coord        placement: Y coord
     role               string       when part of an old element, determines which of the three hardwired text object role is used (footprint, refdes or value)
     string             string       text string (payload)
     fid                integer      font ID
     scale              integer      text size scale in %
     direction          integer  <=5 rotation in 90 degree steps (0 is horizontal); between -3 and +3, inclusive. Starting from v6, the rot field shall be used instead of direction
     rot                angle    >=6 rotation angle in degrees, [0..360), CCW
     thickness          coord    >=6 if zero, use the default width algorithm; if non-zero use this value as rotation angle in degrees
     ha:attributes                   a hash of attribute key=value pairs
      attrib-key        string       attribute value
     ha:flags                        flag bits of a text
      found             flag         If set, this object has been found by FindConnection()
      clearline         flag         For lines and arcs, the line/arc will clear polygons instead of connecting to them.
      selected          flag         Set when the object is selected.
      onsolder          flag         For text, indicates that it is on the solder side.
      drc               flag         Set for objects that fail DRC: flag like FOUND flag for DRC checking.
      lock              flag         Set for locked objects.
      termname          flag         when set the names of pins are shown.
      dyntext           flag         For text: dynamic string (substitute %patterns%)
      floater           flag         subc part can be moved after subc placing
 li:padstack_prototypes          >=4
  unused                none         placeholder for marking unused slot to keep slot indices for early lihata v4
  ha:ps_proto_v4.PID                 padstack prototype specification, as introduced in lihata board v4
   hdia                 coord        hole diameter; 0 means no hole
   htop                 integer      hole start: copper layer index from the top (positive) or bottom (negative) copper layer (0 means top copper layer)
   hbottom              integer      hole start: copper layer index from the bottom (positive) or top (negative) copper layer (0 means bottom copper layer)
   hplated              integer      0=hole and/or slot is unplated; 1=hole and/or slot is plated
   name                 string   >=5 optional user assigned prototype name
   li:shape                          shape per layer type definition
    ha:ps_shape_v4                   shape on a specific layer type (specified by layer_mask and combining), as specifie in lihata board v4; shape is either ps_poly, ps_line or ps_circ (only one of these will present per layer type); shape coords are
                                     relative to padstack origin; layer mask shall contain one material and at most one location bit
     ha:layer_mask                   layer type and location
      top               flag         location: top side
      bottom            flag         location: bottom side
      intern            flag         location: internal
      logical           flag         location: logical (not in the actual stackup)
      copper            flag         material: copper
      silk              flag         material: silk
      mask              flag         material: mask
      paste             flag         material: paste
      outline           flag         "material": router path for board outline; normally for the outer contour, sometimes for biggish inner cutouts as well)
      mech              flag         "material": various mechanical fabbing instructions, e.g. slots; the purpose field provides more detail about the use
      doc               flag         "material": documentation, either for the user and for pcb-rnd or both (the purpose field shoudl tell); e.g. assembly documentation for the user, keepout for the user and DRC
      substrate         flag         material: substrate or insulator
     combining                       layer compositing match
      sub               flag         draw in negative
      auto              flag         padstacks draw their paste, mask and silk objects on the first layer (of matching type) that features the auto flag
     clearance          coord        local, per-layer-type clearance; applied if global padstack clearance is 0
     li:ps_poly                      arbitrary convex polygon shape; contains a list of x;y coordinates
     ha:ps_line                      straight line shape, round or square cap
      x1                coord        line first endpoint, horizontal offset
      y1                coord        line first endpoint, vertical offset
      x2                coord        line second endpoint, horizontal offset
      y2                coord        line second endpoint, vertical offset
      thickness         coord        width of the line
      square            integer      0=round cap; 1=square cap
     ha:ps_circ                      filled circle shape
      x                 coord        center, horizontal offset
      y                 coord        center, vertical offset
      dia               coord        circle diameter
     te:ps_hshadow               >=6 hole/slot shadow
 ha:subc.ID                      >=3 an instance (full copy) of a subcircuit
  uid                   minuid       UID assigned by the user to track subc history
  ha:attributes                      a hash of attribute key=value pairs
   attrib-key           string       attribute value
  ha:flags                           flag bits of a subcircuit
   found                flag         If set, this object has been found by FindConnection()
   selected             flag         Set when the object is selected.
   drc                  flag         Set for objects that fail DRC: flag like FOUND flag for DRC checking.
   lock                 flag         Set for locked objects.
   nonetlist            flag         subcircuit is not on the netlist and should not interfere with the netlist
   termname             flag         when set the names of pins are shown.
   floater              flag         subc part can be moved after subc placing
  ha:data                            Layers and global objects of the board ->
 ha:element.ID                   <3  an instance (full copy) of an obsolete element footprint
  x                     coord        element origin (diamond), horizontal offset
  y                     coord        element origin (diamond), vertical offset
  ha:attributes                      a hash of attribute key=value pairs
   attrib-key           string       attribute value
  ha:flags_element                   flag bits of an element
   found                flag         If set, this object has been found by FindConnection()
   selected             flag         Set when the object is selected.
   auto                 flag         For lines and vias, indicates that these were created by the autorouter.
   drc                  flag         Set for objects that fail DRC: flag like FOUND flag for DRC checking.
   lock                 flag         Set for locked objects.
   nonetlist            flag         subcircuit is not on the netlist and should not interfere with the netlist
   termname             flag         when set the names of pins are shown.
   floater              flag         subc part can be moved after subc placing
   onsolder             flag         element is placed on the solder side
  li:objects                         list of special objects that make up the element; lines and arcs are always on a silk layer
   ha:line.ID                        round cap line ->
   ha:arc.ID                         round cap elliptic arc (only width==height is fully supported at the moment) ->
   ha:text.ID                        single line text object ->
   ha:pad.ID                         SMD pad emulated using a line object; becomes a rectangle (but watch out for the cap-extended length!) when the square flag is set
    x1                  coord        line first endpoint, horizontal offset
    y1                  coord        line first endpoint, vertical offset
    x2                  coord        line second endpoint, horizontal offset
    y2                  coord        line second endpoint, vertical offset
    thickness           coord        width of the line
    clearance           coord        clearance around the line
    mask                coord        size of the mask cutout, as interpreted by gEDA/PCB
    name                string       symbolic name of the pad
    number              string       "pin number" for the netlist
    ha:attributes                    a hash of attribute key=value pairs
     attrib-key         string       attribute value
    ha:flags_pad                     flag bits of a pad
     found              flag         If set, this object has been found by FindConnection()
     hole               flag         For pins and vias, this flag means that the pin or via is a hole without a copper annulus.
     clearline          flag         For lines and arcs, the line/arc will clear polygons instead of connecting to them.
     selected           flag         Set when the object is selected.
     auto               flag         For lines and vias, indicates that these were created by the autorouter.
     warn               flag         For pins, vias, and pads, set to indicate a warning.
     usetherm           flag         Obsolete, indicates that pins/vias should be drawn with thermal fingers.
     drc                flag         Set for objects that fail DRC: flag like FOUND flag for DRC checking.
     lock               flag         Set for locked objects.
     nonetlist          flag         subcircuit is not on the netlist and should not interfere with the netlist
     termname           flag         when set the names of pins are shown.
     floater            flag         subc part can be moved after subc placing
     pin                flag         object is a pin (in an element)
     via                flag         object is a via
   ha:pin.ID                         thru-hole pin; emulated as an old-style via
    x                   coord        place padstack with origin at this horizontal coordinate
    y                   coord        place padstack with origin at this vertical coordinate
    thickness           coord        copper shape dimension (diameter)
    clearance           coord        copper clearance around the copper shape
    mask                coord        mask cutout shape dimension (diameter)
    hole                coord        drill/hole diameter
    name                string       optional name attribute
    number              string       for a pin (or to-be-pin) this is the terminal ID
    ha:attributes                    a hash of attribute key=value pairs
     attrib-key         string       attribute value
    ha:flags_pinvia                  flag bits of a pin or via
     found              flag         If set, this object has been found by FindConnection()
     hole               flag         For pins and vias, this flag means that the pin or via is a hole without a copper annulus.
     clearline          flag         For lines and arcs, the line/arc will clear polygons instead of connecting to them.
     selected           flag         Set when the object is selected.
     auto               flag         For lines and vias, indicates that these were created by the autorouter.
     warn               flag         For pins, vias, and pads, set to indicate a warning.
     usetherm           flag         Obsolete, indicates that pins/vias should be drawn with thermal fingers.
     drc                flag         Set for objects that fail DRC: flag like FOUND flag for DRC checking.
     lock               flag         Set for locked objects.
     nonetlist          flag         subcircuit is not on the netlist and should not interfere with the netlist
     termname           flag         when set the names of pins are shown.
     floater            flag         subc part can be moved after subc placing
     pin                flag         object is a pin (in an element)
     via                flag         object is a via
 ha:rat.ID                           global rat line
  x1                    coord        line first endpoint, horizontal offset
  y1                    coord        line first endpoint, vertical offset
  x2                    coord        line second endpoint, horizontal offset
  y2                    coord        line second endpoint, vertical offset
  lgrp1                 integer      first endpoint's layer group ID
  lgrp2                 integer      second endpoint's layer group ID
  ha:attributes                      a hash of attribute key=value pairs
   attrib-key           string       attribute value
  ha:flags                           flag bits of a line
   found                flag         If set, this object has been found by FindConnection()
   clearline            flag         For lines and arcs, the line/arc will clear polygons instead of connecting to them.
   selected             flag         Set when the object is selected.
   auto                 flag         For lines and vias, indicates that these were created by the autorouter.
   rubberend            flag         For lines, used internally for rubber band moves: indicates one end already rubber banding.
   drc                  flag         Set for objects that fail DRC: flag like FOUND flag for DRC checking.
   lock                 flag         Set for locked objects.
   termname             flag         when set the names of pins are shown.
   floater              flag         subc part can be moved after subc placing

li:submenu

type:name           value  ver description
li:submenu                     ordered list of menu items for a submenu
 m                  string     mnemonic: single character that should be underlined and used as a hot key in the menu name
 -                  none       horizontal separator
 @ANCHOR            none       an anchor is an invisible placeholder where a dynamically generated set of menu items should be inserted runtime
 ha:SUBSUBMENUNAME             sub-submenu item: opens a new level of submenu when clicked
  m                 string     mnemonic: single character that should be underlined and used as a hot key in the menu name
  li:submenu                   ordered list of menu items for a submenu ->
 ha:LEAFSUBMENUNAME            leaf submenu item: executes an action when clicked
  m                 string     mnemonic: single character that should be underlined and used as a hot key in the menu name
  li:a                         list of alternative hotkey sequences to activate the menu
  a                 string     a single hotkey sequences to activate the menu
  li:action                    list of actions to execute when the menu is activated
  action            string     a single action to execute when the menu is activated
  tip               string     tooltip text
  checked           string     the menu item has a checkbox; value is the action to execute to determine whether the menu item's checkbox is checked or not
  update_on         string     path of a conf node that triggers re-evaluation of the checkbox state

Types

+--------------------------------------------------------------------------------------------------+
|  type  |                                       description                                       |
|--------+-----------------------------------------------------------------------------------------|
|angle   |A decimal number without unit, representing an angle in degree. Can be positive or       |
|        |negative.                                                                                |
|--------+-----------------------------------------------------------------------------------------|
|        |A decimal number with a unit suffix. If the unit suffix is missing, the coordinate is    |
|        |loaded in the internal units (which is nanometer as of 2018, but could change in the     |
|        |future, thus files shall not depend on it). Depending on the context, coordinates may    |
|        |have a sign (positive or negative).                                                      |
|coord   |                                                                                         |
|        |Examples:                                                                                |
|        |                                                                                         |
|        |x=10mil;                                                                                 |
|        |y=1.5mm;                                                                                 |
|        |dia=12cm;                                                                                |
|--------+-----------------------------------------------------------------------------------------|
|        |A two-column table of coords. First column are X, second column are Y coordinates.       |
|        |                                                                                         |
|        |Examples:                                                                                |
|        |                                                                                         |
|coordtbl|ta:contour {                                                                             |
|        | 1mm;   2.1mm;                                                                           |
|        | 5mm;   5.2mm;                                                                           |
|        | 3.7mm; 12mil;                                                                           |
|        |}                                                                                        |
|        |ta:foo = { 1mm; 2.1mm;  5mm;   5.2mm;  3.7mm; 12mil; }                                   |
|--------+-----------------------------------------------------------------------------------------|
|double  |Unitless numeric value in decimal format. Depending on context it is sometimes signed.   |
|--------+-----------------------------------------------------------------------------------------|
|flag    |If the flag is set, the value is "1", if the flag is not set, the whole key=value pair is|
|        |omitted.                                                                                 |
|--------+-----------------------------------------------------------------------------------------|
|integer |Unitless integer value in decimal format. Depending on context it is sometimes signed.   |
|--------+-----------------------------------------------------------------------------------------|
|minuid  |An unique ID as generated by libminuid (24 ASCII characters).                            |
|--------+-----------------------------------------------------------------------------------------|
|none    |No value.                                                                                |
|--------+-----------------------------------------------------------------------------------------|
|string  |Free form text data                                                                      |
+--------------------------------------------------------------------------------------------------+

Comments

ver column: Format version range the subtree may appear in.
