Creo un projecte amb LibreCAD, creo la capa ”stroke”, i aquí fiquem les polilínies, tal com s’ha explicat en l’anterior article [1], i tal com es mostra en la imatge. Amb llenguatge C++, el primer que fem és llegir el fitxer dxf i detectar la capa stroke, amb tots els seus punts. En el LibreCAD totes les línies són iguals, tenen un origen i un final. Però a mi m’interessa detectar les polilínies, que són les línies enllaçades de manera que el punt final d’una línia és el mateix que el punt d’origen de la línia següent. Recordem l’estructura de dades que es fa servr:
struct linia {
\tint x0;
\tint y0;
\tint x1;
\tint y1;
\tdouble length;
};
struct polilinia {
\tstd::vector
\tdouble length;
};std::vector
Recorrem totes les línies, i anem afegint elements al vector polilínia, i dins de cada polilínia anem afegint elements al vector línia. Per cada línia i per cada polilínia, tenim calculada la seva longitud. Un cop tenim omplert el vector de polilínies amb les seves línies, ja podem recórrer totes les polilínies i generar la sortida G-Code, de manera que l’inici d’una polilínia està a profunditat -2mm, i el final de la polilínia està a profunditat 0mm, tal com s’aprecia en aquest tros del G-Code resultant, i en la imatge:
(* POLILINE #2 *)
G0 X 30 Y 30
G0 Z 3.000
F150
G1 Z -2.0
F400
G1 X 50 Y 40 Z -1.11
G1 X 60 Y 30 Z -0.55
G1 X 70 Y 40 Z 0
F150
G0 Z 5.000
Com s’aprecia en el G-Code, posicionem la broca al punt (30,30), foradem fins a -2.0mm, i anem passant per tres punts successius tot aixecant de forma proporcional la broca fins arribar al punt (70,40), en què la broca deixa d’atacar la superfície. Així s’aconsegueix un traç variable, tal com s’aprecia en la imatge. Amb aquesta tècnica podré perfilar detalls en els treballs CNC, com ara els cabells d’un retrat, o el traç en una caligrafia.
Com s’aprecia en la imatge (extrecta del projecte de fresar el retrat d’Albert Einstein en blanc i negre, en una altra entrada mostrarem el resultat final), es veu el resultat d’aplicar el script cncstroke per a les polilínies agrupades en la capa stroke del projecte LibreCAD. Veiem dos traços que acaben en punxa (a la part esquerra de la imatge, sobre fusta), i un altre traç, on no s’ha aplicat el script, que no acaba en punxa. A la part dreta de la imatge veiem un tros del projecte LibreCAD on s’han definit aquestes línies (dues que pertanyen a la capa cncstroke, i una altra que es fresa normal). Així doncs, amb un ús correcte del projecte LibreCAD, podem augmentar la resolució del fresat CNC, aconseguint un efecte més real i detallat.
Pots descarregar i estudiar el codi del script cncstroke des del següent enllaç [2] .
Referències:
-
\t
- [1]. Millorant la conversió DXF a G-Code, I
- [2]. cncstroke a wiki.joanillo.org
\t
Nota aclarativa: En el projecte cncstroke utilitzem el terme polilínia com a successió de línies enllaçades. Ara bé, per generar aquestes línies enllaçades, a LibreCAD, utilitzem l’eina línia (i no pas l’eina polilínia) (En una futura versió s’estudiarà la possibilitat d’utilitzar l’eina polilínia, o ambdues).