<div dir="ltr">Ciao,<div>visto che il GCode è un codice strutturato in cui se trovi dei comandi specifici hai delle funzioni apposite; puoi definire una classe con gli oggetti che la compongono così che poi ti puoi gestire tutto il codice strutturato secondo le varie funzioni che ti servono perchè in realtà nono sono a caso.</div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">Il giorno mar 13 feb 2024 alle ore 14:32 Perini Matteo <<a href="mailto:perini.matteo@gmail.com">perini.matteo@gmail.com</a>> ha scritto:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><u></u>

  

    
  
  <div>
    <pre>Ciao a tutti,</pre>
    <pre>è da un po' che non scrivo.</pre>
    <pre>Vi chiedo aiuto perchè sto cercando di leggere delle coordinate da un file Gcode.</pre>
    <pre>Un esempio del testo da parsare è:</pre>
    <pre>;LAYER:1
;MESH:untitled.stl
G0 F7200 X1298 Y1798 Z4
;TYPE:WALL-OUTER
G1 F1800 X702 Y1798 E1494.81223
G1 X702 Y1202 E2242.21834
G92 E0
G1 X1298 Y1202 E747.40611
G1 Y1798 X1298 E1494.81223
;TIME_ELAPSED:177.752007
;CHANGE;
;LAYER:2
;MESH:untitled.stl
G0 F7200 X1298 Y1798 Z6
;TYPE:WALL-OUTER
G1 F1800 X702 Y1798 E2242.21834
G92 E0
G1 X702 Y1202 E747.40611</pre>
    <pre>non ho grossi problemi ad effettuare un parsing corretto ma lo sto facendo con vari if, elif, case,  ecc. cosa che non mi piace molto.</pre>
    <pre>Stavo provando ad utilizzare le regex ma non sto riuscendo a fare quello che voglio (in modo pulito) ovvero identificare le coordinate X, Y e Z anche se in alcuni casi hanno posizioni invertite.
Vorrei anche attribuire un nome al gruppo identificato in modo da usarlo come dizionario.
Stavo usando alcuni pattern tipo "<span style="color:rgb(0,128,0);white-space:pre-wrap">.*Z(?P<Z>\d+[.]?\d*)" </span><span style="white-space:pre-wrap">che vanno bene per individuare le coordinate di un asse ma capita che le righe contengano x y e z oppure solo Z oppure solo x e y. 
Importante, in alcuni casi potrebbero essere anche in ordine differente tipo z y e x.

Per ora i numeri dopo E e F posso trascurarli ma vi chiederei aiuto per riuscire ad ottenere le coordinate da ogni riga.

se tutte le righe rispettassero lo stesso pattern non avrei problemi ma non so come affrontare soprattutto il problema di avere pattern diversi in ordine (quasi) random.

Spero di essere stato abbastanza chiaro.

Grazie a tutti

Matteo


</span></pre>
    <p><br>
    </p>
  </div>

_______________________________________________<br>
Python mailing list<br>
<a href="mailto:Python@lists.python.it" target="_blank">Python@lists.python.it</a><br>
<a href="https://lists.python.it/mailman/listinfo/python" rel="noreferrer" target="_blank">https://lists.python.it/mailman/listinfo/python</a><br>
</blockquote></div><br clear="all"><div><br></div><span class="gmail_signature_prefix">-- </span><br><div dir="ltr" class="gmail_signature"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div><br></div><div><img width="200" height="68" src="https://ci3.googleusercontent.com/mail-sig/AIorK4wfIMciD2TXw7onblUqAmOf6jRB10iSKka6JFvG3Y8P-JPR_M819gpCpMedinVZVlpYkKghfb8"><br>mobile phone : +39 348 002 8107<br>tel: +39 0721 1630292<br>Per appuntamento: <a href="https://zcal.co/massimiliano_tornati" rel="noopener noreferrer" style="border:none;color:rgb(26,115,232);margin:0px;font-family:centra,sans-serif;font-size:14px" target="_blank">https://zcal.co/massimiliano_tornati</a><br><br></div><div>TORNATI PROJECT SRL<br>via Callegari 9-11<br>61122 Pesaro (PU)<br>P.IVA/C.F.  02533270415<br>site: <a href="http://www.tornatiproject.com" target="_blank">TORNATI PROJECT</a></div><div>site:<a href="https://itofood.com/" target="_blank">https://itofood.com/</a></div><div>       </div><div><a href="https://api.whatsapp.com/send/?phone=393496736011&text=%F0%9F%98%8ATornatiProject%C2%A0%20HERE!!!%20how%20can%20help%20you%3F" target="_blank"><img src="https://ci3.googleusercontent.com/mail-sig/AIorK4xq5g_2LP1F0VEbC8ARGFlgVoaJ-UNuL8oExbjPIGuLyrJIZfs4u5JDp2nU7U_8XDV8GPSPRhY" width="96" height="96"></a><a href="https://api.whatsapp.com/send?phone=393480028107&text=Hello%21+%0A+Can+you+help+me%3F+" target="_blank"> </a><img width="96" height="96" src="https://ci3.googleusercontent.com/mail-sig/AIorK4z4m9k13Oy1g8HnCoaQUhwUr4XYNBNXWtUTTWx9K5rYXZN8PYC8D5H2XdIREVPmO8EFXH1lKXQ"><img src="https://ci3.googleusercontent.com/mail-sig/AIorK4xUVKfrFWE5IKrVQz_jqS-YzbOKpuP5sKl5W-ZI2Zqqqjna-tgOtM_dwJSbzbrhCZSrkjhNYyY"></div><div><br>e-mail <a href="mailto:t4p@tornatiproject.com" target="_blank">t4p@tornatiproject.com</a></div><div>Whatapp:<a href="https://wa.me/message/G6CHK7323ZODI1" target="_blank">https://wa.me/message/G6CHK7323ZODI1</a><br><br>The information contained in this e-mail and any attachment is confidential. It is intended only for the named addressee(s).<br>If you are not the named addressee(s) please notify us immediately at the e-mail  <a href="mailto:t4p@tornatiproject.com" target="_blank">t4p@tornatiproject.com</a> and then destroy this message.The copy or distribution of the contents to any other person other than the intended addr<img src="https://ci3.googleusercontent.com/mail-sig/AIorK4wETdISrhvTrNCZf7foNd1_NIdot661QoNKhCErKxVrmsxbVbdXLEyxzf65YF2TpWnYVveUHE8">essee(s) is strictly prohibited and will be punished according to  the relevant laws on privacy and Intellectual Property.</div><div><br>Think before you print!<br>Before you print, please consider if it is necessary. Printing uses electricity, ink and paper.<br></div></div></div></div></div></div></div></div></div></div></div></div></div>