Index: trunk/src/obj_subc.c =================================================================== --- trunk/src/obj_subc.c (revision 17675) +++ trunk/src/obj_subc.c (revision 17676) @@ -225,7 +225,7 @@ if ((pcb_subc_cache_update(sc) != 0) || (sc->aux_cache[PCB_SUBCH_X] == NULL)) return -1; - *rot = PCB_RAD_TO_DEG * atan2(sc->aux_cache[PCB_SUBCH_X]->Point2.Y - sc->aux_cache[PCB_SUBCH_X]->Point1.Y, sc->aux_cache[PCB_SUBCH_X]->Point2.X - sc->aux_cache[PCB_SUBCH_X]->Point1.X); + *rot = -1 * PCB_RAD_TO_DEG * atan2(sc->aux_cache[PCB_SUBCH_X]->Point2.Y - sc->aux_cache[PCB_SUBCH_X]->Point1.Y, sc->aux_cache[PCB_SUBCH_X]->Point2.X - sc->aux_cache[PCB_SUBCH_X]->Point1.X); return 0; } Index: trunk/src/object_act.c =================================================================== --- trunk/src/object_act.c (revision 17675) +++ trunk/src/object_act.c (revision 17676) @@ -631,7 +631,6 @@ { /* replace with subc */ pcb_subc_t *psc; - psc = pcb_subclist_first(&(PCB_PASTEBUFFER->Data->subc)); if (psc != NULL) { pcb_coord_t pcx = 0, pcy = 0; Index: trunk/src_plugins/export_openscad/scad_models.c =================================================================== --- trunk/src_plugins/export_openscad/scad_models.c (revision 17675) +++ trunk/src_plugins/export_openscad/scad_models.c (revision 17676) @@ -84,7 +84,7 @@ tab[ind] = '\t'; ind++; tab[ind] = '\0'; } if (rot != 0) { - pcb_append_printf(&model_calls, " %srotate([0,0,%f])\n", tab, -rot); + pcb_append_printf(&model_calls, " %srotate([0,0,%f])\n", tab, rot); tab[ind] = '\t'; ind++; tab[ind] = '\0'; } if (transf != NULL) { Index: trunk/src_plugins/export_xy/xy.c =================================================================== --- trunk/src_plugins/export_xy/xy.c (revision 17675) +++ trunk/src_plugins/export_xy/xy.c (revision 17676) @@ -682,6 +682,10 @@ if (pcb_subc_get_rotation(subc, &ctx.theta) != 0) pcb_message(PCB_MSG_ERROR, "xy: can't get subc rotation for %s\n", ctx.name); if (pcb_subc_get_side(subc, &bott) != 0) pcb_message(PCB_MSG_ERROR, "xy: can't get subc side for %s\n", ctx.name); + ctx.theta = -ctx.theta; + if (ctx.theta == -0) + ctx.theta = 0; + xy_translate(&ctx, &ctx.x, &ctx.y); ctx.subc = subc;