Index: src_plugins/io_pads/delay_create.c =================================================================== --- src_plugins/io_pads/delay_create.c (revision 34584) +++ src_plugins/io_pads/delay_create.c (revision 34585) @@ -295,6 +295,16 @@ return poly; } +void pcb_dlcr_set_net(pcb_dlcr_draw_t *obj, const char *netname) +{ + free(obj->netname); + if (netname != NULL) + obj->netname = rnd_strdup(netname); + else + obj->netname = NULL; +} + + pcb_dlcr_draw_t *pcb_dlcr_call_on(pcb_dlcr_t *dlcr, void (*cb)(void *rctx, pcb_any_obj_t *obj, void *callctx), void *rctx, void *callctx, int on_next) { pcb_dlcr_draw_t *obj = dlcr_new(dlcr, DLCR_CALL); Index: src_plugins/io_pads/delay_create.h =================================================================== --- src_plugins/io_pads/delay_create.h (revision 34584) +++ src_plugins/io_pads/delay_create.h (revision 34585) @@ -83,7 +83,8 @@ char *key, *val; } attr; } val; - char *name; + char *name; /* for pstk: terminal name */ + char *netname; long loc_line; /* for debug */ gdl_elem_t link; unsigned in_last_subc:1; /* create object within the last created subc instead of on the board */ @@ -129,6 +130,9 @@ pcb_dlcr_draw_t *pcb_dlcr_poly_new(pcb_dlcr_t *dlcr, int hole, long prealloc_len); pcb_dlcr_draw_t *pcb_dlcr_poly_lineto(pcb_dlcr_t *dlcr, pcb_dlcr_draw_t *poly, rnd_coord_t x, rnd_coord_t y); +/* attach a netname to an existing to-be-created object */ +void pcb_dlcr_set_net(pcb_dlcr_draw_t *obj, const char *netname); + /* Call back cb() on the previous (last created) or next object after the object is created */ pcb_dlcr_draw_t *pcb_dlcr_call_on(pcb_dlcr_t *dlcr, void (*cb)(void *rctx, pcb_any_obj_t *obj, void *callctx), void *rctx, void *callctx, int on_next); Index: src_plugins/io_pads/read_high.c =================================================================== --- src_plugins/io_pads/read_high.c (revision 34584) +++ src_plugins/io_pads/read_high.c (revision 34585) @@ -1269,7 +1269,7 @@ } /* draw polygon contour from pieces */ -static int pads_parse_pour_piece_polycnt(pads_read_ctx_t *rctx, pads_poly_type_t poty, rnd_coord_t xo, rnd_coord_t yo) +static int pads_parse_pour_piece_polycnt(pads_read_ctx_t *rctx, pads_poly_type_t poty, rnd_coord_t xo, rnd_coord_t yo, const char *signame) { char type[64]; long n, num_corners, num_arcs, level, loc = rctx->line; @@ -1297,6 +1297,8 @@ } TODO("bloat up the poly if width != 0"); + if ((*signame != '\0') && (poly != NULL)) + pcb_dlcr_set_net(poly, signame); return 1; } @@ -1337,7 +1339,7 @@ PADS_ERROR((RND_MSG_ERROR, "Unhandled pour type: '%s' - please report this bug\n", type)); for(n = 0; n < num_pieces; n++) - if ((res = pads_parse_pour_piece_polycnt(rctx, poty, xo, yo)) <= 0) return res; + if ((res = pads_parse_pour_piece_polycnt(rctx, poty, xo, yo, signame)) <= 0) return res; return 1; }