UL_PAD

Data members

   
angle real (0.0...359.9)
diameter[layer] int
drill int
drillsymbol int
elongation int
flags int (PAD_FLAG_...)
name string (PAD_NAME_LENGTH)
shape[layer] int (PAD_SHAPE_...)
signal string
x, y int (center point, see note)

See also UL_FOOTPRINT, UL_CONTACT, UL_SMD

Constants

   
PAD_FLAG_STOP generate stop mask
PAD_FLAG_THERMALS generate thermals
PAD_FLAG_FIRST use special "first pad" shape
PAD_SHAPE_SQUARE square
PAD_SHAPE_ROUND round
PAD_SHAPE_OCTAGON octagon
PAD_SHAPE_LONG long
PAD_SHAPE_OFFSET offset
PAD_NAME_LENGTH max. recommended length of a pad name (same as CONTACT_NAME_LENGTH)

Note

The parameters of the pad depend on the context in which it is accessed:

The diameter and shape of the pad depend on the layer for which they shall be retrieved, because they may be different in each layer depending on the Design Rules. If one of the layers LAYER_TOP...LAYER_BOTTOM, LAYER_TSTOP or LAYER_BSTOP is given as the index to the diameter or shape data member, the resulting value will be calculated according to the Design Rules. If LAYER_PADS is given, the raw value as defined in the library will be returned.

drillsymbol returns the number of the drill symbol that has been assigned to this drill diameter (see the manual for a list of defined drill symbols). A value of 0 means that no symbol has been assigned to this drill diameter.

angle defines how many degrees the pad is rotated counterclockwise around its center.

elongation is only valid for shapes PAD_SHAPE_LONG and PAD_SHAPE_OFFSET and defines how many percent the long side of such a pad is longer than its small side. This member returns 0 for any other pad shapes.

The value returned by flags must be masked with the PAD_FLAG_... constants to determine the individual flag settings, as in

if (pad.flags & PAD_FLAG_STOP) {
   ...
   }

Note that if your ULP just wants to draw the objects, you don't need to check these flags explicitly. The diameter[] and shape[] members will return the proper data; for instance, if PAD_FLAG_STOP is set, diameter[LAYER_TSTOP] will return 0, which should result in nothing being drawn in that layer. The flags member is mainly for ULPs that want to create script files that create library objects.

Example

library(L) {
  L.footprints(FPT) {
    FPT.contacts(C) {
      if (C.pad)
         printf("Pad: '%s', (%f %f), d=%f\n",
                 C.name, u2mm(C.pad.x), u2mm(C.pad.y), u2mm(C.pad.diameter[LAYER_BOTTOM]));
      }
    }
  }