Index: trunk/src/find_intconn.c =================================================================== --- trunk/src/find_intconn.c (revision 11042) +++ trunk/src/find_intconn.c (revision 11043) @@ -75,29 +75,37 @@ PCB_VIA_LOOP(s->data); { - if ((via != from_ptr) && (via->term != NULL) && (via->intconn == ic) && (!PCB_FLAG_TEST(TheFlag, via))) + if ((via != from_ptr) && (via->term != NULL) && (via->intconn == ic) && (!PCB_FLAG_TEST(TheFlag, via))) { + PCB_FLAG_SET(PCB_FLAG_DRC_INTCONN, via); ADD_PV_TO_LIST(via, from_type, from_ptr, PCB_FCT_INTERNAL); + } } PCB_END_LOOP; PCB_LINE_COPPER_LOOP(s->data); { - if ((line != from_ptr) && (line->term != NULL) && (line->intconn == ic) && (!PCB_FLAG_TEST(TheFlag, line))) + if ((line != from_ptr) && (line->term != NULL) && (line->intconn == ic) && (!PCB_FLAG_TEST(TheFlag, line))) { + PCB_FLAG_SET(PCB_FLAG_DRC_INTCONN, line); ADD_LINE_TO_LIST(l, line, from_type, from_ptr, PCB_FCT_INTERNAL); + } } PCB_ENDALL_LOOP; PCB_ARC_COPPER_LOOP(s->data); { - if ((arc != from_ptr) && (arc->term != NULL) && (arc->intconn == ic) && (!PCB_FLAG_TEST(TheFlag, arc))) + if ((arc != from_ptr) && (arc->term != NULL) && (arc->intconn == ic) && (!PCB_FLAG_TEST(TheFlag, arc))) { + PCB_FLAG_SET(PCB_FLAG_DRC_INTCONN, arc); ADD_ARC_TO_LIST(l, arc, from_type, from_ptr, PCB_FCT_INTERNAL); + } } PCB_ENDALL_LOOP; PCB_POLY_COPPER_LOOP(s->data); { - if ((polygon != from_ptr) && (polygon->term != NULL) && (polygon->intconn == ic) && (!PCB_FLAG_TEST(TheFlag, polygon))) + if ((polygon != from_ptr) && (polygon->term != NULL) && (polygon->intconn == ic) && (!PCB_FLAG_TEST(TheFlag, polygon))) { + PCB_FLAG_SET(PCB_FLAG_DRC_INTCONN, polygon); ADD_POLYGON_TO_LIST(l, polygon, from_type, from_ptr, PCB_FCT_INTERNAL); + } } PCB_ENDALL_LOOP; @@ -106,8 +114,10 @@ no find through text yet PCB_TEXT_COPPER_LOOP(s->data); { - if ((text != from_ptr) && (text->term != NULL) && (text->intconn == ic) && (!PCB_FLAG_TEST(TheFlag, text))) + if ((text != from_ptr) && (text->term != NULL) && (text->intconn == ic) && (!PCB_FLAG_TEST(TheFlag, text))) { + PCB_FLAG_SET(PCB_FLAG_DRC_INTCONN, text); ADD_TEXT_TO_LIST(l, text, from_type, from_ptr, PCB_FCT_INTERNAL); + } } PCB_ENDALL_LOOP; #endif Index: trunk/src/flag.h =================================================================== --- trunk/src/flag.h (revision 11042) +++ trunk/src/flag.h (revision 11043) @@ -90,7 +90,8 @@ PCB_FLAG_NONETLIST = 0x10000, /* element is not on the netlist and should not interfere with the netlist */ PCB_FLAG_MINCUT = 0x20000, /* used by the mincut short find code */ PCB_FLAG_ONPOINT = 0x40000, /*!< crosshair is on line point or arc point */ - PCB_FLAG_TERMNAME = 0x80000 /*!< when set the names of pins are shown. */ + PCB_FLAG_TERMNAME = 0x80000, /*!< when set the names of pins are shown. */ + PCB_FLAG_DRC_INTCONN = 0x100000 /*!< Set for objects are put on the DRC mark because of an intconn */ /* PCB_FLAG_NOCOPY = (PCB_FLAG_FOUND | CONNECTEDFLAG | PCB_FLAG_ONPOINT)*/ } pcb_flag_values_t; Index: trunk/src/rats.c =================================================================== --- trunk/src/rats.c (revision 11042) +++ trunk/src/rats.c (revision 11043) @@ -222,36 +222,36 @@ for(n = pcb_r_first(PCB->Data->pin_tree, &it); n != NULL; n = pcb_r_next(&it)) { if (clear_ratconn) ((pcb_pin_t *)n)->ratconn = NULL; - PCB_FLAG_CLEAR(PCB_FLAG_DRC, (pcb_pin_t *)n); + PCB_FLAG_CLEAR(PCB_FLAG_DRC | PCB_FLAG_DRC_INTCONN, (pcb_pin_t *)n); } pcb_r_end(&it); for(n = pcb_r_first(PCB->Data->via_tree, &it); n != NULL; n = pcb_r_next(&it)) - PCB_FLAG_CLEAR(PCB_FLAG_DRC, (pcb_pin_t *)n); + PCB_FLAG_CLEAR(PCB_FLAG_DRC | PCB_FLAG_DRC_INTCONN, (pcb_pin_t *)n); pcb_r_end(&it); for(n = pcb_r_first(PCB->Data->pad_tree, &it); n != NULL; n = pcb_r_next(&it)) { if (clear_ratconn) ((pcb_pad_t *)n)->ratconn = NULL; - PCB_FLAG_CLEAR(PCB_FLAG_DRC, (pcb_pad_t *)n); + PCB_FLAG_CLEAR(PCB_FLAG_DRC | PCB_FLAG_DRC_INTCONN, (pcb_pad_t *)n); } pcb_r_end(&it); for(li = 0, l = PCB->Data->Layer; li < PCB->Data->LayerN; li++,l++) { for(n = pcb_r_first(l->line_tree, &it); n != NULL; n = pcb_r_next(&it)) - PCB_FLAG_CLEAR(PCB_FLAG_DRC, (pcb_line_t *)n); + PCB_FLAG_CLEAR(PCB_FLAG_DRC | PCB_FLAG_DRC_INTCONN, (pcb_line_t *)n); pcb_r_end(&it); for(n = pcb_r_first(l->arc_tree, &it); n != NULL; n = pcb_r_next(&it)) - PCB_FLAG_CLEAR(PCB_FLAG_DRC, (pcb_arc_t *)n); + PCB_FLAG_CLEAR(PCB_FLAG_DRC | PCB_FLAG_DRC_INTCONN, (pcb_arc_t *)n); pcb_r_end(&it); for(n = pcb_r_first(l->polygon_tree, &it); n != NULL; n = pcb_r_next(&it)) - PCB_FLAG_CLEAR(PCB_FLAG_DRC, (pcb_polygon_t *)n); + PCB_FLAG_CLEAR(PCB_FLAG_DRC | PCB_FLAG_DRC_INTCONN, (pcb_polygon_t *)n); pcb_r_end(&it); for(n = pcb_r_first(l->text_tree, &it); n != NULL; n = pcb_r_next(&it)) - PCB_FLAG_CLEAR(PCB_FLAG_DRC, (pcb_text_t *)n); + PCB_FLAG_CLEAR(PCB_FLAG_DRC | PCB_FLAG_DRC_INTCONN, (pcb_text_t *)n); pcb_r_end(&it); } } @@ -525,8 +525,8 @@ conn->obj = (pcb_any_obj_t *)line; conn->group = pcb_layer_get_group_(layer); conn->menu = NULL; - if (line->term != NULL) - PCB_FLAG_CLEAR(PCB_FLAG_DRC, line); + if PCB_FLAG_TEST(PCB_FLAG_DRC_INTCONN, line) + PCB_FLAG_CLEAR(PCB_FLAG_DRC | PCB_FLAG_DRC_INTCONN, line); } } PCB_ENDALL_LOOP; @@ -543,8 +543,8 @@ conn->obj = (pcb_any_obj_t *)polygon; conn->group = pcb_layer_get_group_(layer); conn->menu = NULL; /* agnostic view of where it belongs */ - if (polygon->term != NULL) - PCB_FLAG_CLEAR(PCB_FLAG_DRC, polygon); + if PCB_FLAG_TEST(PCB_FLAG_DRC_INTCONN, polygon) + PCB_FLAG_CLEAR(PCB_FLAG_DRC | PCB_FLAG_DRC_INTCONN, polygon); } } PCB_ENDALL_LOOP; @@ -557,8 +557,8 @@ conn->ptr1 = via; conn->obj = (pcb_any_obj_t *)via; conn->group = Sgrp; - if (via->term != NULL) - PCB_FLAG_CLEAR(PCB_FLAG_DRC, via); + if PCB_FLAG_TEST(PCB_FLAG_DRC_INTCONN, via) + PCB_FLAG_CLEAR(PCB_FLAG_DRC | PCB_FLAG_DRC_INTCONN, via); } } PCB_END_LOOP;