Index: trunk/src/obj_term.c =================================================================== --- trunk/src/obj_term.c (revision 11007) +++ trunk/src/obj_term.c (revision 11008) @@ -290,6 +290,9 @@ if ((subc = pcb_subc_by_name(data, subc_name)) == NULL) return NULL; + if (PCB_FLAG_TEST(PCB_FLAG_NONETLIST, subc)) + return NULL; + /* search for global objects: via */ if (lyt & (PCB_LYT_COPPER | PCB_LYT_MASK | PCB_LYT_OUTLINE)) { PCB_VIA_LOOP(subc->data) { Index: trunk/src/obj_term.h =================================================================== --- trunk/src/obj_term.h (revision 11007) +++ trunk/src/obj_term.h (revision 11008) @@ -78,7 +78,8 @@ 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 on layers matching lyt. Returns the object - or NULL if not found. If the *out parameters are non-NULL, load them */ + or NULL if not found. If the *out parameters are non-NULL, load them. + Ignores subcircuits marked as nonetlist even if explicitly named. */ 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 11007) +++ trunk/src/rats.c (revision 11008) @@ -391,7 +391,9 @@ static void **find_shorts_in_subc(pcb_subc_t *subc_in, vtptr_t *generic, pcb_lib_menu_t *theNet, void **menu, pcb_bool *warn) { -#warning subc TODO: check for nonetlist; ignore subc if found + if (PCB_FLAG_TEST(PCB_FLAG_NONETLIST, subc_in)) + return menu; + PCB_VIA_LOOP(subc_in->data); { if (via->term == NULL)