Toda vez que queremos repetir algo fica fundamental voltar para o começo da rotina.
Qual o ponto inicial?
X-40 Y0!
Portanto fica obrigatório voltar para este ponto! (ou não mudar esta posição!)
Come age o programa O777??
Executa uma interpolação circular com centro em X0 Y0, logo depois volta para o centro mesmo!
Eis o primeiro problema: porque voltar para o centro se você precisa repetir o mesmo programa?
Estou em X-40 Y0, executo uma rotação circular e fico neste ponto para poder repetir, não precisa ir para o centro, está errado!!
Por a ferramenta no centro significa mudar a posição do circulo, isto é G3 X-40 Y0 I40 J0 não pode ser mais realizado porque
significa mudar o centro para X40 Y0 (escrever I40 quer dizer por o centro 40mm mais a direita donde estou).
Portanto o sub_programa deve ser
O777
G3 X-40 Y0 I40 J0
M99
ou simplesmente
G3I40
(Mach3 pode não aceitar esta notação, portanto é preferível usar a completa.
Estamos usando una notação relativa... lembro que Mach3 pode mudar esta condição para notação absoluta)
Outro problema! Z[#100-1]
Este código não está errado (a escritura fica correta) mas não pode agir come você deseja pois fica constante, não muda!
Come sugerido, você deve diminuir a #100 cada vez que entra no ciclo, e Mach3 usa necessariamente parênteses
#100=[#100-1]
Eis as mudanças
G0 X-40 Y0
#100=40
M98 P777 L39
G0 Z100
M30
O777
#100=[#100-1]
Z#100
G3 F200 X-40 Y0 I40 J0
M99
(sendo #100=40 devo supor L=40, porque 39?)
Na verdade o uso de uma variável fica bom como exercício mas não precisa usá-la neste programa!
G90 G0 X-40 Y0
M98 P777 L40
G0 Z100
M30
O777
G91Z-1
G90 G3 F200 X-40 Y0 I40 J0 (ou G3I40)
M99