Como já comentado anteriormente, teria que imaginar uma lógica simples que atuasse no programa de forma a só liberar os movimentos quando o sensor de cima estivesse acionado.
Enquanto isso não é feito, poderá tentar adaptar a sua solução de uma forma que minimize este tipo de problema ou acontecimento.
Da última vez que eu ví o arquivo de corte que você usou, notei que voce usou o sinal de direção do eixo "Z" para fazer a válvula atuar no curso do eixo, e assim faz com que a ferramenta suba e desça conforme sua necessidade.
Eu notei que o curso de "Z" é relativamente curto, e isso pode significar que o programa irá se deslocar para a próxima coordenada de furação antes do "Z" se retrais completamente.
Uma maneira de contornar isso seria aumentar o curso de "Z" ou melhor talvez limitar a velocidade de deslocamento "lógico" deste eixo - assim daria tempo da máquina retrair antes de sair andando...
Eu cheguei a fazer uma lógica simples usando alguma macro, mas os resultados não foram satisfatórios porque houve um problema de aumento da carga no processador do PC e com isso o Mach3 perde um pouco de sua eficiência.
Estou estudando uma outra lógica usando o "brain" do Mach3, mas ainda não tive tempo de me dedicar...