Index: trunk/src/thermal.c =================================================================== --- trunk/src/thermal.c (revision 12415) +++ trunk/src/thermal.c (revision 12416) @@ -146,24 +146,31 @@ case PCB_THERMAL_ROUND: if (line->thermal & PCB_THERMAL_DIAGONAL) { + /* side clear lines */ pa = pa_line_at( x1 - clrth * nx - clr * vx * 0.75, y1 - clrth * ny - clr * vy * 0.75, x2 - clrth * nx + clr * vx * 0.75, y2 - clrth * ny + clr * vy * 0.75, clr); - pb = pa_line_at( x1 + clrth * nx - clr * vx * 0.75, y1 + clrth * ny - clr * vy * 0.75, x2 + clrth * nx + clr * vx * 0.75, y2 + clrth * ny + clr * vy * 0.75, clr); - pcb_polyarea_boolean_free(pa, pb, &pc, PCB_PBO_UNITE); + /* x1;y1 cap arc */ pa = pc; pc = NULL; pb = pa_arc_at(x1, y1, clrth, x1 - clrth * nx + clr * vx * 2.0, y1 - clrth * ny + clr * vy * 2.0, x1 + clrth * nx + clr * vx * 2.0, y1 + clrth * ny + clr * vy * 2.0, clr, 180.0); + pcb_polyarea_boolean_free(pa, pb, &pc, PCB_PBO_UNITE); + /* x2;y2 cap arc */ + pa = pc; pc = NULL; + pb = pa_arc_at(x2, y2, clrth, + x2 - clrth * nx - clr * vx * 2.0, y2 - clrth * ny - clr * vy * 2.0, + x2 + clrth * nx - clr * vx * 2.0, y2 + clrth * ny - clr * vy * 2.0, + clr, 180.0); pcb_polyarea_boolean_free(pa, pb, &pc, PCB_PBO_UNITE); return pc;