Index: pstk_compat.c =================================================================== --- pstk_compat.c (revision 20903) +++ pstk_compat.c (revision 20904) @@ -206,7 +206,7 @@ if (mask > 0) compat_shape_free(&mask_master); - return pcb_pstk_new(data, pid, x, y, clearance, pcb_flag_make(PCB_FLAG_CLEARLINE)); + return pcb_pstk_new(data, -1, pid, x, y, clearance, pcb_flag_make(PCB_FLAG_CLEARLINE)); } static pcb_pstk_compshape_t get_old_shape_square(pcb_coord_t *dia, const pcb_pstk_shape_t *shp) @@ -479,7 +479,7 @@ } } -pcb_pstk_t *pcb_pstk_new_compat_pad(pcb_data_t *data, pcb_coord_t x1, pcb_coord_t y1, pcb_coord_t x2, pcb_coord_t y2, pcb_coord_t thickness, pcb_coord_t clearance, pcb_coord_t mask, pcb_bool square, pcb_bool nopaste, pcb_bool onotherside) +pcb_pstk_t *pcb_pstk_new_compat_pad(pcb_data_t *data, long int id, pcb_coord_t x1, pcb_coord_t y1, pcb_coord_t x2, pcb_coord_t y2, pcb_coord_t thickness, pcb_coord_t clearance, pcb_coord_t mask, pcb_bool square, pcb_bool nopaste, pcb_bool onotherside) { pcb_layer_type_t side; pcb_pstk_proto_t proto; @@ -527,7 +527,7 @@ if (pid == PCB_PADSTACK_INVALID) return NULL; - return pcb_pstk_new(data, pid, cx, cy, clearance/2, pcb_flag_make(PCB_FLAG_CLEARLINE)); + return pcb_pstk_new(data, id, pid, cx, cy, clearance/2, pcb_flag_make(PCB_FLAG_CLEARLINE)); } Index: pstk_compat.h =================================================================== --- pstk_compat.h (revision 20903) +++ pstk_compat.h (revision 20904) @@ -19,8 +19,9 @@ /* Convert an existing padstack to old-style via and return broken down parameters */ pcb_bool pcb_pstk_export_compat_via(pcb_pstk_t *ps, pcb_coord_t *x, pcb_coord_t *y, pcb_coord_t *drill_dia, pcb_coord_t *pad_dia, pcb_coord_t *clearance, pcb_coord_t *mask, pcb_pstk_compshape_t *cshape, pcb_bool *plated); -/* Create a padstack that emulates an old-style pad - register proto as needed */ -pcb_pstk_t *pcb_pstk_new_compat_pad(pcb_data_t *data, pcb_coord_t x1, pcb_coord_t y1, pcb_coord_t x2, pcb_coord_t y2, pcb_coord_t thickness, pcb_coord_t clearance, pcb_coord_t mask, pcb_bool square, pcb_bool nopaste, pcb_bool onotherside); +/* Create a padstack that emulates an old-style pad - register proto as needed + If id <= 0, allocate an id automatically. */ +pcb_pstk_t *pcb_pstk_new_compat_pad(pcb_data_t *data, long int id, pcb_coord_t x1, pcb_coord_t y1, pcb_coord_t x2, pcb_coord_t y2, pcb_coord_t thickness, pcb_coord_t clearance, pcb_coord_t mask, pcb_bool square, pcb_bool nopaste, pcb_bool onotherside); /* Convert an existing padstack to old-style pad and return broken down parameters */ pcb_bool pcb_pstk_export_compat_pad(pcb_pstk_t *ps, pcb_coord_t *x1, pcb_coord_t *y1, pcb_coord_t *x2, pcb_coord_t *y2, pcb_coord_t *thickness, pcb_coord_t *clearance, pcb_coord_t *mask, pcb_bool *square, pcb_bool *nopaste); Index: pstk_help.c =================================================================== --- pstk_help.c (revision 20903) +++ pstk_help.c (revision 20904) @@ -50,7 +50,7 @@ pcb_pstk_proto_update(&proto); pid = pcb_pstk_proto_insert_dup(data, &proto, 1); - return pcb_pstk_new(data, pid, x, y, 0, pcb_flag_make(PCB_FLAG_CLEARLINE)); + return pcb_pstk_new(data, -1, pid, x, y, 0, pcb_flag_make(PCB_FLAG_CLEARLINE)); } pcb_layer_type_t lyts[] = { @@ -98,7 +98,7 @@ proto.hplated = plated; pid = pcb_pstk_proto_insert_or_free(data, &proto, quiet); if (pid != PCB_PADSTACK_INVALID) { - pcb_pstk_t *ps = pcb_pstk_new(data, pid, 0, 0, 0, pcb_flag_make(PCB_FLAG_CLEARLINE | PCB_FLAG_FOUND)); + pcb_pstk_t *ps = pcb_pstk_new(data, -1, pid, 0, 0, 0, pcb_flag_make(PCB_FLAG_CLEARLINE | PCB_FLAG_FOUND)); vtp0_append(objs, ps); if (term != NULL) pcb_attribute_put(&ps->Attributes, "term", term); @@ -311,7 +311,7 @@ if (pid == PCB_PADSTACK_INVALID) return NULL; - return pcb_pstk_new(data, pid, x, y, glob_clearance, pcb_flag_make(PCB_FLAG_CLEARLINE)); + return pcb_pstk_new(data, -1, pid, x, y, glob_clearance, pcb_flag_make(PCB_FLAG_CLEARLINE)); } void pcb_shape_rect(pcb_pstk_shape_t *shape, pcb_coord_t width, pcb_coord_t height)