PCB GPMI

Reference manual for package layout

Automatically generated from layout.h

Enums

Enum values should be passed on as strings.

layout_object_mask_e

 Object type search mask bits 
value meaning
OM_LINE lines (traces, silk lines, not font)
OM_TEXT text written using the font
OM_POLYGON polygons, including rectangles
OM_ARC arcs, circles
OM_VIA vias and holes which are not part of a footprint
OM_PIN pins/pads of a footprint
OM_ANY shorthand for "find anything"

layout_object_coord_e

 Which coordinate of the object is referenced 
value meaning
OC_BX1 bounding box X1
OC_BX2 bounding box X2
OC_BY1 bounding box Y1
OC_BY2 bounding box Y2
OC_P1X point 1 X
OC_P2X point 2 X
OC_P1Y point 1 Y
OC_P2Y point 2 Y
OC_OBJ the whole object
OC_P1 point 1 is P1X
OC_P2 point 2 is P2X

layout_flag_e

 of layout_object_coord_t 
value meaning
FL_NONE <comment missing in the header>
FL_SHOWNUMBER <comment missing in the header>
FL_LOCALREF <comment missing in the header>
FL_CHECKPLANS <comment missing in the header>
FL_SHOWDRC <comment missing in the header>
FL_RUBBERBAND <comment missing in the header>
FL_DESCRIPTION <comment missing in the header>
FL_NAMEONPCB <comment missing in the header>
FL_AUTODRC <comment missing in the header>
FL_ALLDIRECTION <comment missing in the header>
FL_SWAPSTARTDIR <comment missing in the header>
FL_UNIQUENAME <comment missing in the header>
FL_CLEARNEW <comment missing in the header>
FL_SNAPPIN <comment missing in the header>
FL_SHOWMASK <comment missing in the header>
FL_THINDRAW <comment missing in the header>
FL_ORTHOMOVE <comment missing in the header>
FL_LIVEROUTE <comment missing in the header>
FL_THINDRAWPOLY <comment missing in the header>
FL_LOCKNAMES <comment missing in the header>
FL_ONLYNAMES <comment missing in the header>
FL_NEWFULLPOLY <comment missing in the header>
FL_HIDENAMES <comment missing in the header>
FL_THERMALSTYLE1 <comment missing in the header>
FL_THERMALSTYLE2 <comment missing in the header>
FL_THERMALSTYLE3 <comment missing in the header>
FL_THERMALSTYLE4 <comment missing in the header>
FL_THERMALSTYLE5 <comment missing in the header>

layer_field_e

 Field name of the layer structure 
value meaning
LFLD_NUM_LINES number of lines on the layer
LFLD_NUM_TEXTS number of texts on the layer
LFLD_NUM_POLYS number of polygons on the layer
LFLD_NUM_ARCS number of arcs on the layer
LFLD_VISIBLE non-zero if the layer is visible
LFLD_NODRC non-zero if the layer doesn't use DRC

Functions

The following functions are registered in script context.

int layout_search_box(const char* search_ID, layout_object_mask_t obj_types, int x1, int y1, int x2, int y2)

 creates a new search and adds all objects that matches obj_types mask within the given rectangle on the current layer
   Arguments:
     search_ID: unique name of the search (overwrites existing search on the same name)
     obj_types: on or more object types
     x1, y1, x2, y2: box the search is done within (PCB coords)
   Returns the number of object on the search list. 

int layout_search_selected(const char* search_ID, layout_object_mask_t obj_types)

 creates a new search and adds all selected objects
   Arguments:
     search_ID: unique name of the search (overwrites existing search on the same name)
     obj_types: on or more object types
   Returns the number of object on the search list. 

int layout_search_found(const char* search_ID, layout_object_mask_t obj_types)

 creates a new search and adds all found objects (the green highlight)
   Arguments:
     search_ID: unique name of the search (overwrites existing search on the same name)
     obj_types: on or more object types
   Returns the number of object on the search list. 

layout_object_t* layout_search_get(const char* search_ID, int n)

 Returns the nth object from a search list (or NULL pointer if n is beyond the list) 

int layout_search_free(const char* search_ID)

 Frees all memory related to a search. Returns 0 on success.
   Argument:
     search_ID: unique name of the search (requires an existing search) 

int layout_obj_coord(layout_object_t* obj, layout_object_coord_t coord)

 Return the requested coord of an object; except for the bounding box
    coordinates, the meaning of coordinates are object-specific.
    Point 1 and point 2 are usually endpoints of the object (line, arc),
    "the whole object" coordinate is a central point. 

layout_object_mask_t layout_obj_type(layout_object_t* obj)

 Return the type of an object (always a single bit) 

int layout_obj_move(layout_object_t* obj, layout_object_coord_t coord, int dx, int dy)

 Change location of an object or parts of the object (like move endpoint of a line);
   Arguments:
     obj: the object
     coord: which coordinate to drag (e.g. move only the endpoint)
     dx, dy: relative x and y coordinates the selected coordinate is displaced by
   Returns 0 on success 

int layout_arc_angles(layout_object_t* obj, int relative, int start, int delta)

 change angles of an arc; start and delta are relative if relative is non-zero; returns 0 on success 

int layout_create_line(int x1, int y1, int x2, int y2, int thickness, int clearance, layout_flag_t flags)

 create a line 

int layout_create_via(int x, int y, int thickness, int clearance, int mask, int hole, const char* name, layout_flag_t flags)

 create a named via 

int layout_create_arc(int x, int y, int width, int height, int sa, int dir, int thickness, int clearance, layout_flag_t flags)

 create a new arc; sa is start angle, dir is delta angle 

void layout_switch_to_layer(int layer)

 switch to layer (further layer-specific actions will take place there) 

int layout_get_current_layer()

 returns the number of the current layer 

int layout_resolve_layer(const char* name)

 resolve layer number by name (case sensitive); returns negative number if not found 

int layout_get_max_possible_layer()

 return the theoretical number of layers supported by PCB 

int layout_get_max_layer()

 return the actual number of layers on the current design 

const char* layout_layer_name(int layer)

 return the name of a layer 

const char* layout_layer_color(int layer)

 return the color of a layer 

int layout_layer_field(int layer, layer_field_t fld)

 return an integer field of a layer 

int layout_get_page_width()

 query or set width and height of the drawing 

int layout_get_page_height()

<comment missing in the header>

void layout_set_page_size(int width, int height)

<comment missing in the header>

double mil2pcb_multiplier()

 -- coordinate system -- (coord.c) 

double mm2pcb_multiplier()

<comment missing in the header>

const char* current_grid_unit()

<comment missing in the header>

int debug_draw_request(void)

 Initialize debug drawing; returns 1 if worked, 0 if denied 

void debug_draw_flush(void)

 Flush the drawing 

void debug_draw_finish(dctx_t* ctx)

 Finish (close) drawing 

dctx_t* debug_draw_dctx(void)

 Get the draw context of debug draw 

void draw_set_color(dctx_t* ctx, const char* name)

 Debug draw style: set drawing color 

void draw_set_line_width(dctx_t* ctx, int width)

 Debug draw style: set line width 

void draw_set_draw_xor(dctx_t* ctx, int xor)

 Debug draw style: set whether drawing should happen in xor 

void draw_set_draw_faded(dctx_t* ctx, int faded)

 Debug draw style: set whether drawing should happen in faded mode  

void draw_line(dctx_t* ctx, int x1_, int y1_, int x2_, int y2_)

 Debug draw: draw a line using the current style settings