# attributes recognized

Attributes are key-value pairs attached to objects. The format and content of both keys and values are free form. Most of the time the meaning of an attribute is defined by the user and the only code that process the attribute are user scripts.

However, there are a few attributes recognized and parsed by pcb-rnd. This document lists those attributes.

## Object attribute summary

attr key | object | description
--- | --- | ---
term | drawing primitives, subcircuit | terminal ID
intconn | terminals (drawing primitives, subcircuit with the term attribute set) | internal connection
intnoconn | copper objects (drawing primitives) | break internal connection
noexport | drawing primitives | do not export the object
refdes | subcircuit | reference designator; the unique name of the subcircuit instance (also used in the netlist)
extobj | subcircuit | names the extended object implementation that handles the subcircuit
init-invis | layer group | the layer group should be inivisible after loading the board

## Object attribute details

### term

Terminal ID is the unique identifier of a terminal (pin, pad, lead of a part). Together with the subcircuit's refdes, the terminal ID is used to identify the terminal on the netlist. Very often matches the datasheet's pin number.

### intconn

Value is a small positive integer. Terminals within the same subc sharing the same intconn value are connected within the package, even if terminal IDs differ. The connection is invisible/implied. Used to indicate in-package connections (e.g. zero ohm resistor used for an extra layer).

### intnoconn

Value is a small positive integer. Copper objects within the same subc sharing the same intnoconn value are assumed to have no connection with each other even if they overlap by geometry. Used to break unwanted connection in a subcircuit, e.g. to avoid shorts in a 2 terminal antenna or coil footprint.

### noexport

A drawing primitive that has the noexport attribute (with any value) is marked on the screen with an overlay X mark and is not exported to any of the graphical exports. A noexport:exportername attribute will inhibit the object only from the named exporter (e.g. noexport:png will make the object disappear from the png export but not from any other exports). Multiple noexport:exportername can be used.

Some side effects of the object will not disappear:

- clearance in nearby polygons are preserved
- the object contributes in bounding box calculation

The noexport attribute on padstacks will inhibit all shapes (including the slot) and the hole too.

Graphical exports are those that use the central draw mechanism for getting the drawing primitives generated. Some exporters, typically the ones that export data (and not drawing) will not call the draw API and thus will ignore the noexport attribute.