Index: bom2.c =================================================================== --- bom2.c (revision 37992) +++ bom2.c (revision 37993) @@ -295,6 +295,15 @@ append_clean(s, ctx->name); return 0; } + if (strncmp(*input, "prefix%", 7) == 0) { + const char *t; + *input += 7; + + for(t = ctx->name; isalpha(*t); t++) + gds_append(s, *t); + return 0; + } + if (strncmp(*input, "footprint%", 10) == 0) { *input += 10; gds_append_str(s, ctx->footprint); @@ -402,7 +411,7 @@ const char *refdes = RND_UNKNOWN(pcb_attribute_get(&subc->Attributes, "refdes")); ctx.subc = subc; - ctx.name = (char *)RND_UNKNOWN(pcb_attribute_get(&subc->Attributes, "refdes")); + ctx.name = (char *)refdes; ctx.footprint = (char *)RND_UNKNOWN(pcb_subc_name(subc, "export_bom2::footprint")); ctx.value = (char *)RND_UNKNOWN(pcb_attribute_get(&subc->Attributes, "value")); Index: export_bom2.conf =================================================================== --- export_bom2.conf (revision 37992) +++ export_bom2.conf (revision 37993) @@ -13,7 +13,7 @@ # Quantity, Description, Value, RefDes # -------------------------------------------- } -geda.subc2id = {%subc.footprint%__%subc.value%} +geda.subc2id = {%subc.prefix%__%subc.footprint%__%subc.value%} geda.item = {%count%,"%subc.footprint%","%subc.value%",%names% } geda.footer = {}