Index: trunk/src_plugins/io_tedax/io_tedax.c =================================================================== --- trunk/src_plugins/io_tedax/io_tedax.c (revision 32344) +++ trunk/src_plugins/io_tedax/io_tedax.c (revision 32345) @@ -52,6 +52,7 @@ #include "tdrc_query.h" #include "tetest.h" #include "tnetlist.h" +#include "trouter.h" #include "menu_internal.c" @@ -150,7 +151,7 @@ } \ } while(0) -static const char pcb_acts_LoadtedaxFrom[] = "LoadTedaxFrom(netlist|board|footprint|stackup|layer|drc|drc_query, filename, [block_id, [silent, [src]]])"; +static const char pcb_acts_LoadtedaxFrom[] = "LoadTedaxFrom(netlist|board|footprint|stackup|layer|drc|drc_query|route_res, filename, [block_id, [silent, [src]]])"; static const char pcb_acth_LoadtedaxFrom[] = "Loads the specified block from a tedax file."; static fgw_error_t pcb_act_LoadtedaxFrom(fgw_arg_t *res, int argc, fgw_arg_t *argv) { @@ -173,6 +174,11 @@ RND_ACT_IRES(tedax_net_load(fname, 1, id, silent)); return 0; } + if (rnd_strcasecmp(type, "route_res") == 0) { + gen_load(route_res, fname); + RND_ACT_IRES(tedax_route_res_load(fname, id, silent)); + return 0; + } if (rnd_strcasecmp(type, "board") == 0) { gen_load(board, fname); RND_ACT_IRES(tedax_board_load(PCB, fname, id, silent)); Index: trunk/src_plugins/io_tedax/stackup.c =================================================================== --- trunk/src_plugins/io_tedax/stackup.c (revision 32344) +++ trunk/src_plugins/io_tedax/stackup.c (revision 32345) @@ -44,6 +44,7 @@ { htsp_init(&ctx->n2g, strhash, strkeyeq); vtp0_init(&ctx->g2n); + ctx->include_grp_id = 0; } void tedax_stackup_uninit(tedax_stackup_t *ctx) @@ -53,12 +54,17 @@ } -static void gen_layer_name(char dst[65], const char *name, int prefix) +static void gen_layer_name(tedax_stackup_t *ctx, char dst[65], const char *name, int prefix, rnd_layergrp_id_t gid) { char *d = dst; int rem = 64, l; - if (prefix != 0) { + if (ctx->include_grp_id) { + l = sprintf(dst, "%ld.", gid); + rem -= l; + d += l; + } + else if (prefix != 0) { l = sprintf(dst, "%d_", prefix); rem -= l; d += l; @@ -300,10 +306,10 @@ continue; } - gen_layer_name(tname, grp->name, 0); - if (htsp_has(&ctx->n2g, tname)) { + gen_layer_name(ctx, tname, grp->name, 0, gid); + if (!ctx->include_grp_id && (htsp_has(&ctx->n2g, tname))) { prefix++; - gen_layer_name(tname, grp->name, prefix); + gen_layer_name(ctx, tname, grp->name, prefix, gid); } if (grp->len > 1) { Index: trunk/src_plugins/io_tedax/stackup.h =================================================================== --- trunk/src_plugins/io_tedax/stackup.h (revision 32344) +++ trunk/src_plugins/io_tedax/stackup.h (revision 32345) @@ -5,6 +5,7 @@ typedef struct { htsp_t n2g; /* tedax name to layer group pointer */ vtp0_t g2n; /* group ID to tedax layer name */ + unsigned include_grp_id:1; /* whether to include group IDs in the name as prefix */ } tedax_stackup_t; Index: trunk/src_plugins/io_tedax/trouter.c =================================================================== --- trunk/src_plugins/io_tedax/trouter.c (revision 32344) +++ trunk/src_plugins/io_tedax/trouter.c (revision 32345) @@ -99,6 +99,7 @@ } tedax_stackup_init(&ctx); + ctx.include_grp_id = 1; fputc('\n', f); if (tedax_stackup_fsave(&ctx, pcb, stackupid, f, PCB_LYT_COPPER) != 0) { rnd_message(RND_MSG_ERROR, "internal error: failed to save the stackup\n");