La condivido con voi, spero possa tornarvi utile

Premetto che questa macro funziona solo se conosciamo il centro di rotazione, che sarà anche la nostra origine principale (G54)
#100=...(POSIZIONE ORIGINE IN X INIZIALE RISPETTO A G54);
#101=...(POSIZIONE ORIGINE IN Y INIZIALE RISPETTO A G54);
#102=...(ANGOLO DI ROTAZIONE ASSE B);
;
(CALCOLI);
#103=[SQRT[[#100*#100]+[#101*#101]]];
#104=[#100/#101];
#105=[ATAN[#104]];
#106=[#105+#102];
#107=[#103*[SIN[#106]]]; (POS. X DOPO ROTAZIONE)
#108=[#103*[COS[#106]]]; (POS. Y DOPO ROTAZIONE)
Con questi dati abbiamo quindi la posizione dell'origine e la utilizzeremo all'interno di un origine temporanea
ad esempio partiamo con la prima lavorazione (alla B di partenza), utilizzando il G52 in questo modo:
G52X#100Y#101Z....;
finita la lavorazione a B0 ruotiamo dell'angolo desiderato e reimpostiamo l'origine:
B#102;
G52X#107Y#108;