Index: src_plugins/rbs_routing/map.c =================================================================== --- src_plugins/rbs_routing/map.c (revision 38845) +++ src_plugins/rbs_routing/map.c (revision 38846) @@ -464,12 +464,18 @@ clearance = tn->clearance; } - rnd_hid_set_line_width(pcb_draw_out.fgGC, RBSR_G2R(copper*2)); - rnd_render->draw_line(pcb_draw_out.fgGC, x1, y1, x2, y2); + if (!line->RBSR_WIREFRAME_FLAG) { + rnd_hid_set_line_width(pcb_draw_out.fgGC, RBSR_G2R(copper*2)); + rnd_render->draw_line(pcb_draw_out.fgGC, x1, y1, x2, y2); + } rnd_hid_set_line_width(pcb_draw_out.fgGC, 1); - pcb_draw_wireframe_line(pcb_draw_out.fgGC, x1, y1, x2, y2, RBSR_G2R(copper*2+clearance*2), -1); + if (line->RBSR_WIREFRAME_FLAG) + pcb_draw_wireframe_line(pcb_draw_out.fgGC, x1, y1, x2, y2, RBSR_G2R(copper*2), -1); + else + pcb_draw_wireframe_line(pcb_draw_out.fgGC, x1, y1, x2, y2, RBSR_G2R(copper*2+clearance*2), -1); + return rnd_RTREE_DIR_FOUND_CONT; } @@ -491,8 +497,10 @@ sa = 180.0 - (arc->sa * RND_RAD_TO_DEG); da = - (arc->da * RND_RAD_TO_DEG); - rnd_hid_set_line_width(pcb_draw_out.fgGC, RBSR_G2R(copper*2)); - rnd_render->draw_arc(pcb_draw_out.fgGC, cx, cy, r, r, sa, da); + if (!arc->RBSR_WIREFRAME_FLAG) { + rnd_hid_set_line_width(pcb_draw_out.fgGC, RBSR_G2R(copper*2)); + rnd_render->draw_arc(pcb_draw_out.fgGC, cx, cy, r, r, sa, da); + } rnd_hid_set_line_width(pcb_draw_out.fgGC, 1); @@ -499,8 +507,12 @@ tmparc.X = cx; tmparc.Y = cy; tmparc.Width = tmparc.Height = r; tmparc.StartAngle = sa; tmparc.Delta = da; - pcb_draw_wireframe_arc_(pcb_draw_out.fgGC, &tmparc, RBSR_G2R(copper*2+clearance*2), 0); + if (arc->RBSR_WIREFRAME_FLAG) + pcb_draw_wireframe_arc_(pcb_draw_out.fgGC, &tmparc, RBSR_G2R(copper*2), 0); + else + pcb_draw_wireframe_arc_(pcb_draw_out.fgGC, &tmparc, RBSR_G2R(copper*2+clearance*2), 0); + return rnd_RTREE_DIR_FOUND_CONT; } Index: src_plugins/rbs_routing/map.h =================================================================== --- src_plugins/rbs_routing/map.h (revision 38845) +++ src_plugins/rbs_routing/map.h (revision 38846) @@ -31,6 +31,8 @@ #define RBSR_R2G(v) ((double)(v)/1000.0) #define RBSR_G2R(v) ((rnd_coord_t)rnd_round((v)*1000.0)) +#define RBSR_WIREFRAME_FLAG user_flg1 + int rbsr_map_pcb(rbsr_map_t *dst, pcb_board_t *pcb, rnd_layer_id_t lid); void rbsr_map_uninit(rbsr_map_t *dst); Index: src_plugins/rbs_routing/seq.c =================================================================== --- src_plugins/rbs_routing/seq.c (revision 38845) +++ src_plugins/rbs_routing/seq.c (revision 38846) @@ -67,7 +67,7 @@ RND_INLINE int rbsr_seq_redraw(rbsr_seq_t *rbsq) { grbs_t *grbs = &rbsq->map.grbs; - grbs_addr_t *last, *curr = NULL, *cons; + grbs_addr_t *last, *curr = NULL, *cons = NULL; int n, broken = 0, res = 0; grbs_path_remove_2net_addrs(grbs, rbsq->tn); @@ -95,6 +95,7 @@ curr = cons; else res = -1; + rnd_trace(" cons=%p\n", cons); } @@ -127,6 +128,27 @@ } rnd_trace("--\n"); + /* turn the last section into wireframe */ + if (cons != NULL) { + grbs_arc_t *arc = gdl_first(&rbsq->tn->arcs); + if (arc != NULL) { + arc->RBSR_WIREFRAME_FLAG = 1; + if (arc->da == 0) { + /* make the consider-arc non-zero in length to make it visible */ + if (rbsq->consider.dir == GRBS_ADIR_CONVEX_CW) + arc->da = 1; + else if (rbsq->consider.dir == GRBS_ADIR_CONVEX_CCW) + arc->da = -1; + } + if (arc->eline != NULL) { + arc->eline->RBSR_WIREFRAME_FLAG = 1; + arc = gdl_next(&rbsq->tn->arcs, arc); + if (arc != NULL) + arc->RBSR_WIREFRAME_FLAG = 1; + } + } + } + return res; } Index: src_plugins/rbs_routing/tool_seq.c =================================================================== --- src_plugins/rbs_routing/tool_seq.c (revision 38845) +++ src_plugins/rbs_routing/tool_seq.c (revision 38846) @@ -106,7 +106,10 @@ if (pcb_crosshair.AttachedLine.State != PCB_CH_STATE_SECOND) return; - rnd_render->draw_line(pcb_crosshair.GC, seq.last_x, seq.last_y, pcb_crosshair.X, pcb_crosshair.Y); + /* draw a single line from the last known point if the seq router couldn't + offer a solution */ + if (seq.consider.dir == RBS_ADIR_invalid) + rnd_render->draw_line(pcb_crosshair.GC, seq.last_x, seq.last_y, pcb_crosshair.X, pcb_crosshair.Y); } void pcb_tool_seq_escape(rnd_design_t *hl)