Index: trunk/src/data.c =================================================================== --- trunk/src/data.c (revision 12538) +++ trunk/src/data.c (revision 12539) @@ -360,6 +360,17 @@ data->LayerN = pcb->Data->LayerN; } +void pcb_data_make_layers_bound(pcb_board_t *pcb4layer_groups, pcb_data_t *data) +{ + pcb_layer_id_t n; + for(n = 0; n < data->LayerN; n++) { + pcb_layer_type_t lyt = pcb_layergrp_flags(pcb4layer_groups, data->Layer[n].meta.real.grp); + pcb_layer_real2bound_offs(&data->Layer[n], pcb4layer_groups, &data->Layer[n]); + data->Layer[n].parent = data; + data->Layer[n].meta.bound.type = lyt; + } +} + void pcb_data_binding_update(pcb_board_t *pcb, pcb_data_t *data) { int i; Index: trunk/src/data.h =================================================================== --- trunk/src/data.h (revision 12538) +++ trunk/src/data.h (revision 12539) @@ -136,6 +136,10 @@ /* Set up all data layers as bound layers to pcb's Data */ void pcb_data_bind_board_layers(pcb_board_t *pcb, pcb_data_t *data, int share_rtrees); +/* redo all layers of data to be bound layers (layer recipes) using the stackup + from pcb4layer_groups. The new bound layers are not bound to any real layer. */ +void pcb_data_make_layers_bound(pcb_board_t *pcb4layer_groups, pcb_data_t *data); + /* Recalculate the layer bindings updating meta.bound.real to new board layers */ void pcb_data_binding_update(pcb_board_t *pcb, pcb_data_t *data);