Index: map_2nets.c =================================================================== --- map_2nets.c (revision 34973) +++ map_2nets.c (revision 34974) @@ -57,7 +57,7 @@ if (htpp_get(&map->o2n, obj) != NULL) /* object already found */ return; - seg = pcb_qry_parent_net_len_mapseg(map->ec, obj); + seg = pcb_qry_parent_net_len_mapseg(map->ec, obj, map->find_rats); if (seg == NULL) return; Index: map_2nets.h =================================================================== --- map_2nets.h (revision 34973) +++ map_2nets.h (revision 34974) @@ -26,6 +26,10 @@ #include "board.h" +#include "obj_rat.h" +#include "obj_poly.h" +#include "obj_pstk.h" + #include #include "../src_plugins/query/net_len.h" @@ -49,9 +53,10 @@ typedef union pcb_2netmap_obj_s { pcb_arc_t arc; pcb_line_t line; - pcb_line_t pstk; - pcb_line_t poly; - pcb_line_t text; + pcb_rat_t rat; + pcb_pstk_t pstk; + pcb_poly_t poly; + pcb_text_t text; } pcb_2netmap_obj_t; typedef struct pcb_2netmap_oseg_s pcb_2netmap_oseg_t; @@ -65,6 +70,7 @@ typedef struct pcb_2netmap_s { pcb_2netmap_control_t ctrl; pcb_2netmap_oseg_t *osegs; /* output: head of a singly linked list */ + unsigned find_rats:1; /* config: set to 1 if rats shall be included */ /* internal */ htpp_t o2n; /* of (pcb_2netmap_iseg_t *); tells the net for an object */ Index: map_2nets_map.c =================================================================== --- map_2nets_map.c (revision 34973) +++ map_2nets_map.c (revision 34974) @@ -42,6 +42,7 @@ /* copy the object but reset some fields as this object is not part of any layer list */ switch(obj->type) { case PCB_OBJ_LINE: memcpy(res, obj, sizeof(res->line)); memset(&res->line.link, 0, sizeof(gdl_elem_t)); break; + case PCB_OBJ_RAT: memcpy(res, obj, sizeof(res->rat)); memset(&res->rat.link, 0, sizeof(gdl_elem_t)); break; case PCB_OBJ_ARC: memcpy(res, obj, sizeof(res->arc)); memset(&res->arc.link, 0, sizeof(gdl_elem_t)); break; case PCB_OBJ_PSTK: memcpy(res, obj, sizeof(res->pstk)); memset(&res->pstk.link, 0, sizeof(gdl_elem_t)); break; case PCB_OBJ_POLY: memcpy(res, obj, sizeof(res->poly)); memset(&res->poly.link, 0, sizeof(gdl_elem_t)); break; @@ -87,6 +88,8 @@ map_seg_get_end_coords_on_line(from, (pcb_line_t *)hub_obj, &tmp->line.Point1.X, &tmp->line.Point1.Y); map_seg_get_end_coords_on_line(to, (pcb_line_t *)hub_obj, &tmp->line.Point2.X, &tmp->line.Point2.Y); break; + case PCB_OBJ_RAT: + abort(); case PCB_OBJ_ARC: { double sa, ea, mid;