Index: trunk/src/obj_term.c =================================================================== --- trunk/src/obj_term.c (revision 10896) +++ trunk/src/obj_term.c (revision 10897) @@ -265,17 +265,22 @@ } \ } while(0) -pcb_any_obj_t *pcb_term_find_name(pcb_data_t *data, const char *subc_name, const char *term_name, pcb_bool same, pcb_subc_t **parent_out, pcb_layergrp_id_t *gid_out) +pcb_any_obj_t *pcb_term_find_name(pcb_board_t *pcb, pcb_data_t *data, pcb_layer_type_t lyt, const char *subc_name, const char *term_name, pcb_bool same, pcb_subc_t **parent_out, pcb_layergrp_id_t *gid_out) { pcb_subc_t *subc; pcb_layer_t *layer; int l; + if (lyt == 0) + return pcb_false; + if ((subc = pcb_subc_by_name(PCB->Data, subc_name)) == NULL) return NULL; layer = data->Layer; for (l = 0; l < data->LayerN; l++, layer++) { + if ((pcb_layer_flags_(pcb, layer) & lyt) == 0) + continue; PCB_LINE_LOOP(layer) { CHECK_TERM_LY(line); } PCB_END_LOOP; Index: trunk/src/obj_term.h =================================================================== --- trunk/src/obj_term.h (revision 10896) +++ trunk/src/obj_term.h (revision 10897) @@ -77,8 +77,8 @@ /* Rename an object's ->term field in an undoable way */ pcb_term_err_t pcb_term_undoable_rename(pcb_board_t *pcb, pcb_any_obj_t *obj, const char *new_name); -/* Look up subc_name/term_name and put the result in conn. Returns the object +/* Look up subc_name/term_name on layers matching lyt. Returns the object or NULL if not found. If the *out parameters are non-NULL, load them */ -pcb_any_obj_t *pcb_term_find_name(pcb_data_t *data, const char *subc_name, const char *term_name, pcb_bool same, pcb_subc_t **parent_out, pcb_layergrp_id_t *gid_out); +pcb_any_obj_t *pcb_term_find_name(pcb_board_t *pcb, pcb_data_t *data, pcb_layer_type_t lyt, const char *subc_name, const char *term_name, pcb_bool same, pcb_subc_t **parent_out, pcb_layergrp_id_t *gid_out); #endif Index: trunk/src/rats.c =================================================================== --- trunk/src/rats.c (revision 10896) +++ trunk/src/rats.c (revision 10897) @@ -114,7 +114,7 @@ /* first check for subcircuits; this is the only one thing we'll need to do once elements are removed */ - obj = pcb_term_find_name(PCB->Data, ElementName, PinNum, Same, (pcb_subc_t **)&conn->ptr1, &conn->group); + obj = pcb_term_find_name(PCB, PCB->Data, PCB_LYT_COPPER, ElementName, PinNum, Same, (pcb_subc_t **)&conn->ptr1, &conn->group); if (obj != NULL) { conn->obj = obj; pcb_obj_center(obj, &conn->X, &conn->Y);