Index: trunk/src/obj_pstk.h =================================================================== --- trunk/src/obj_pstk.h (revision 32750) +++ trunk/src/obj_pstk.h (revision 32751) @@ -77,6 +77,7 @@ unsigned long hash; /* optimization: linear search compare speeded up: go into detailed match only if hash matches */ pcb_data_t *parent; int mech_idx; /* -1 or index to the first shape[] that is of PCB_LYT_MECH */ + unsigned all_copper_connd:1; /* 1 if all copper shapes are connected by the hole/slot (regardless of plating!) */ } pcb_pstk_proto_t; /* Whether a proto cuts through board layers (has a hole or slot) */ Index: trunk/src/obj_pstk_proto.c =================================================================== --- trunk/src/obj_pstk_proto.c (revision 32750) +++ trunk/src/obj_pstk_proto.c (revision 32751) @@ -87,15 +87,20 @@ /* mark each shape with whether it overlaps with the hole/mech shape or not */ hole = pcb_pstk_shape_mech_or_hole_(NULL, dst, &holetmp); + dst->all_copper_connd = (hole != NULL); for(n = 0; n < ts->len; n++) { if (hole == &ts->shape[n]) ts->shape[n].hconn = 1; - else if (hole != NULL) + else if (hole != NULL) { ts->shape[n].hconn = pcb_pstk_shape_intersect(&dummy_ps, &ts->shape[n], &dummy_ps, hole); + if ((ts->shape[n].layer_mask & PCB_LYT_COPPER) && !ts->shape[n].hconn) + dst->all_copper_connd = 0; + } else ts->shape[n].hconn = 0; /*rnd_trace(" [%d]: %d\n", n, ts->shape[n].hconn);*/ } +/*rnd_trace(" all: %d\n", dst->all_copper_connd);*/ } }