Cammino

Come dovrebbe spiegare il suo nome, è un minuscolo programma di cad-cam che ho scritto per uso didattico (o meglio, autodidattico). Permette di disegnare polilinee formate da segmenti rettilinei e archi di cerchio, e poi generare un codice (FANUC) da passare ad una fresa a controllo numerico per incidere i disegni stessi. Le linee disegnate costituiscono le traiettorie del centro della fresa sul pezzo. È molto rozzo per troppi aspetti, ma piuttosto divertente, e in certi casi permette di ottenere il risultato desiderato veramente con poca fatica.
Funziona, ovviamente, in python (necessario il modulo Tkinter).

L'uso è molto semplice. Innanzitutto si stabilisce la scala del disegno che si vuole tracciare, in pixel/millimetro, cioè quanti pixel dello schermo corrispondono ad un millimetro sul pezzo che verrà inciso dalla fresa. Il numero va scritto nella casella apposita, quindi si preme il pulsante "scala".
È possibile far comparire una griglia di punti per aiutarsi nel disegno; nella casella relativa si indica la maglia della griglia desiderata. Attivando il quadratino "cattura punti" i punti segnati sul disegno verranno "catturati" dai punti della griglia (equivale all' "o-snap" dei programmi CAD).
Nella finestra nera si esegue il disegno: l'origine del sistema di coordinate x-y è nell'angolo in basso a destra.

la schermata del programma

Cliccando con il pulsante sinistro, ogni clic segna un punto di una spezzata composta di segmenti rettilinei. Cliccando con il pulsante destro la spezzata viene chiusa, e si può cominciare a tracciarne un'altra a partire da un altro punto. In qualsiasi momento, al posto di un segmento rettilineo, si può tracciare un arco di cerchio: dopo aver cliccato col pulsante sinistro sul primo punto dell'arco (che puņ essere il punto finale del segmento o arco precedente), si preme (sulla colonna a destra) il pulsante "arco orario" oppure "arco antiorario", poi si segna il centro dell'arco, infine si segna il punto finale dell'arco.
Naturalmente, una volta stabiliti primo punto e raggio, il programma individua sulla circonferenza così definita il punto finale più vicino a quello indicato.
Ogni volta che si chiude una linea il programma aggiorna un documento "linee.txt" che si trova nella stessa cartella, e contiene la sequenza dei punti e delle linee costituenti il disegno. Questo documento è realizzato in xml e risulta di facile comprensione.
Quando il disegno è completo si stabiliscono la profondità massima da raggiungere nell'incisione (va inserita nella casella "z lavoro", è un numero negativo) e il numero di passate con cui raggiungere la profondità massima. Si può specificare anche l'altezza a cui deve la fresa si deve tenere sul pezzo nei movimenti in rapido: questo valore è prestabilito pari a 1 mm.
Stabiliti anche questi dettagli, si preme il pulsante "genera codice", e il programma rilascia il codice FANUC nel documento "codcam.txt", che viene creato nella stessa cartella. In questo documento occorre modificare i dati di intestazione relativi a:
dimensioni del pezzo
caratteristiche dell'utensile
velocità di rotazione della fresa
velocità di avanzamento della fresa
Ad esempio: queste sono le prime righe del codice rilasciato automaticamente:

[BILLET X200 Y50 Z35
[TOOLDEF T1 L0 D8
N10 G92
N20 G49
N30 G91
N40 G28 X0 Y0 Z0
N50 G90
N60 M06 T01
N70 G43 H01
N80 M03 S1000
N90 F10

La prima riga contiene le dimensioni del pezzo in lavorazione, in questo caso 200 x 50 x 35 mm;
la seconda le dimensioni dell'utensile "T1"; notare L0, cioè lunghezza nulla: significa che il calcolatore interno alla macchina non deve correggere le profondità in base alla lunghezza della fresa, perché il riferimento per la profondità è preso in corrispondenza dell'estremità della fresa stessa.
nell'ottava riga "S1000" significa che la fresa girerà a 1000 giri/min;
nella nona riga "F10" imposta l'avanzamento a 10 mm/min.
Pertanto, se si vuole incidere un pezzo delle dimensioni di x=180 mm, y=100 mm, z=40 mm usando una fresa dal diametro di 2 mm con velocità di rotazione di 500 giri/min e velocità di avanzamento di 100 mm/min le righe iniziali del codice dovranno essere modificate nel seguente modo:

[BILLET X180 Y100 Z40
[TOOLDEF T1 L0 D2
N10 G92
N20 G49
N30 G91
N40 G28 X0 Y0 Z0
N50 G90
N60 M06 T01
N70 G43 H01
N80 M03 S500
N90 F100

Il resto del codice è corretto, e contiene la sequenza di movimenti che la fresa deve eseguire, comprese le discese a profondità di lavoro, le risalite, i movimenti in rapido dalla fine di una linea all'inizio della successiva; il tutto è ripetuto per il numero di passate richieste, ognuna alla profondità necessaria.
Gli ultimi tre pulsanti permettono di modificare un disegno già tracciato cambiandone la scala e traslandolo in x e in y.

cammino.py (21 kb)