Index: layertab.c =================================================================== --- layertab.c (revision 35251) +++ layertab.c (revision 35252) @@ -92,3 +92,6 @@ {0} }; + +/* These layers from the above table should be created on all boards */ +static const int eagle_layer_always[] = { 29, 30, 31, 32, 0 }; Index: read.c =================================================================== --- read.c (revision 35251) +++ read.c (revision 35252) @@ -292,6 +292,20 @@ return c; } + +#include "layertab.c" + +static pcb_layer_t *eagle_layer_get(read_state_t *st, eagle_layerid_t id, eagle_loc_t loc, void *obj); + + /* create layers that are always required */ +static void eagle_setup_layers_auto(read_state_t *st) +{ + const int *elid; + + for(elid = eagle_layer_always; *elid != 0; elid++) + eagle_layer_get(st, *elid, ON_BOARD, NULL); +} + static int eagle_read_layers(read_state_t *st, trnode_t *subtree, void *obj, int type) { trnode_t *n; @@ -365,13 +379,12 @@ } } pcb_layer_group_setup_silks(st->pcb); + eagle_setup_layers_auto(st); pcb_layer_auto_fixup(st->pcb); pcb_layergrp_inhibit_dec(); return 0; } -#include "layertab.c" - static pcb_layer_t *eagle_layer_get(read_state_t *st, eagle_layerid_t id, eagle_loc_t loc, void *obj) { eagle_layer_t *ly = htip_get(&st->layers, id); @@ -1806,7 +1819,6 @@ return 0; } - int io_eagle_read_pcb_xml(pcb_plug_io_t *ctx, pcb_board_t *pcb, const char *Filename, rnd_conf_role_t settings_dest) { int pp_res, res, old_leni;