Index: spoke.c =================================================================== --- spoke.c (revision 18476) +++ spoke.c (revision 18477) @@ -99,6 +99,29 @@ spoke_pos(sp, spacing, x, y); } +void spoke_pos_at_end(spoke_t *sp, pcb_coord_t bloat, pcb_coord_t *x, pcb_coord_t *y) +{ + pcb_coord_t spacing = 0; + int i; + + if (vtp0_len(&sp->slots) > 0) { + for (i = 0; i < vtp0_len(&sp->slots) - 1; i++) { + spacing += conf_core.design.bloat; + spacing += ((ewire_t *) (sp->slots.array[i]))->wire->thickness; + } + spacing += conf_core.design.bloat; + if (bloat < 0) + spacing += (((ewire_t *) (sp->slots.array[vtp0_len(&sp->slots) - 1]))->wire->thickness + 1)/2; + else + spacing += ((ewire_t *) (sp->slots.array[vtp0_len(&sp->slots) - 1]))->wire->thickness; + } + + if (bloat >= 0) + spacing += bloat; + + spoke_pos(sp, spacing, x, y); +} + void spoke_insert_wire_at_slot(spoke_t *sp, int slot_num, ewire_t *ew) { if (vtp0_in_bound(&sp->slots, slot_num) && sp->slots.array[slot_num] != NULL) { Index: spoke.h =================================================================== --- spoke.h (revision 18476) +++ spoke.h (revision 18477) @@ -29,6 +29,7 @@ void spoke_pos_at_wire_point(spoke_t *sp, wire_point_t *wp, pcb_coord_t *x, pcb_coord_t *y); void spoke_pos_at_slot(spoke_t *sp, int slot, pcb_coord_t *x, pcb_coord_t *y); +void spoke_pos_at_end(spoke_t *sp, pcb_coord_t bloat, pcb_coord_t *x, pcb_coord_t *y); void spoke_insert_wire_at_slot(spoke_t *sp, int slot_num, ewire_t *ew);