Index: toolpath.c =================================================================== --- toolpath.c (revision 15292) +++ toolpath.c (revision 15293) @@ -180,22 +180,37 @@ sub_global_all(pcb, result, layer); } -static void trace_contour(pcb_board_t *pcb, pcb_tlp_session_t *result, int tool_idx, pcb_coord_t extra_offs) +static pcb_cardinal_t trace_contour(pcb_board_t *pcb, pcb_tlp_session_t *result, int tool_idx, pcb_coord_t extra_offs) { pcb_poly_it_t it; pcb_polyarea_t *pa; pcb_coord_t tool_dia = result->tools->dia[tool_idx]; + pcb_cardinal_t cnt = 0; for(pa = pcb_poly_island_first(result->fill, &it); pa != NULL; pa = pcb_poly_island_next(&it)) { pcb_pline_t *pl = pcb_poly_contour(&it); if (pl != NULL) { /* we have a contour */ pcb_pline_to_lines(result->res_path, pl, tool_dia + extra_offs, 0, pcb_no_flags()); - for(pl = pcb_poly_hole_first(&it); pl != NULL; pl = pcb_poly_hole_next(&it)) + cnt++; + for(pl = pcb_poly_hole_first(&it); pl != NULL; pl = pcb_poly_hole_next(&it)) { pcb_pline_to_lines(result->res_path, pl, tool_dia + extra_offs, 0, pcb_no_flags()); + cnt++; + } } } + return cnt; } +static void trace_spiral(pcb_board_t *pcb, pcb_tlp_session_t *result, int tool_idx, pcb_coord_t extra_offs) +{ + int n; + pcb_coord_t tool_dia = result->tools->dia[tool_idx]; + + while(trace_contour(pcb, result, tool_idx, extra_offs) > 0) + extra_offs += tool_dia; +} + + int pcb_tlp_mill_copper_layer(pcb_tlp_session_t *result, pcb_layer_t *layer) { pcb_board_t *pcb = pcb_data_get_top(layer->parent);