macro per file .txt

Sezione dedicata al G-code, postate qui dubbi o i Vs. lavori in formato G-code.
Rispondi
Diego
Member
Member
Messaggi: 560
Iscritto il: domenica 13 gennaio 2008, 15:18
Località: Vicenza

macro per file .txt

Messaggio da Diego » mercoledì 13 febbraio 2019, 7:06

Buongiorno ragazzi/e mi ritrovo a "ravanare" dentro una macro e a "non capire" come modificarla secondo le mie necessità, chiedo consiglio a voi.

La macro è una sperimentazione di tastatura 3D di una superficie/oggetto, appena la si lancia chiede quanti punti devo tastare in X e Y, l'altezza massima e minima di Z, quanto "distanti" devono essere i punti in X e Y per ultimo la velocità di tastatura (tutti parametri sotto variabile e modificabili ovviamente). Alla fine della scansione (dell'area delimitata all'inizio) crea un file .txt per poterlo elaborare con vari CAD in formato .txt (nuvola di punti).

il file di punti contiene informazioni "inutili e incompatibili" al momento del passaggio/ritorno al CAD e vengono tutt'ora cancellati a mano (processo lungo e noioso)

una riga standard del file "punti.txt" è: X1.2000 Y0.0000 Z3.3500 ;nx=0 ny=0 (tralasciamo la spegazione X, Y e Z :mrgreen: mentre NX e NY sono i punti tastati)
a me servirebbe scritta così : 1.2000 0.0000 3.3500

allego la macro da usare sulla mia CNC homemade 4 assi (in espansione a 5, cambio utensile "semiautomatico" e tastatore 3D) ponte fisso, scheda EDING CNC, mandrino proxxon LB/E (modificato da 1 a 3 cuscinetti interni)

ignoravo la possibilità che una macro potesse scrivere dati in formato .txt.. e mi piacerebbe "capire" che comando è e come si applica in una macro

Codice: Seleziona tutto

Sub user_5
   ;probe scanning routine for eneven surface milling
;scanning starts at x=0, y=0

  if [#4100 == 0]
   #4100 = 10  ;nx
   #4101 = 5   ;ny
   #4102 = 40  ;max z 
   #4103 = 10  ;min z 
   #4104 = 1.0 ;step size
   #4105 = 100 ;probing feed
  endif    

  #110 = 0    ;Actual nx
  #111 = 0    ;Actual ny
  #112 = 0    ;Missed measurements counter
  #113 = 0    ;Number of points added
  #114 = 1    ;0: odd x row, 1: even xrow

  ;Dialog
  dlgmsg "gridMeas" "nx" 4100 "ny" 4101 "maxZ" 4102 "minZ" 4103 "gridSize" 4104 "Feed" 4105 
    
  if [#5398 == 1] ; user pressed OK
    ;Move to startpoint
    g0 z[#4102];to upper Z
    g0 x0 y0 ;to start point
        
    ;ZHCINIT gridSize nx ny
    ZHCINIT [#4104] [#4100] [#4101] 
    
    #111 = 0    ;Actual ny value
    while [#111 < #4101]
        if [#114 == 1]
          ;even x row, go from 0 to nx
          #110 = 0 ;start nx
          while [#110 < #4100]
            ;Go up, goto xy, measure
            g0 z[#4102];to upper Z
            g0 x[#110 * #4104] y[#111 * #4104] ;to new scan point
            g38.2 F[#4105] z[#4103];probe down until touch
                    
            
            #110 = [#110 + 1] ;next nx
          endwhile
          #114=0
        else
          ;odd x row, go from nx to 0
          #110 = [#4100 - 1] ;start nx
          while [#110 > -1]
            ;Go up, goto xy, measure
            g0 z[#4102];to upper Z
            g0 x[#110 * #4104] y[#111 * #4104] ;to new scan point
            g38.2 F[#4105] z[#4103];probe down until touch
                    
  

            #110 = [#110 - 1] ;next nx
          endwhile
          #114=1
        endif
	  
      #111 = [#111 + 1] ;next ny
    endwhile
        
    g0 z[#4102];to upper Z
    ;Save measured table
    ZHCS punti.txt
    msg "Done, "#113" points added, "#112" not added" 
        
  else
    ;user pressed cancel in dialog
    msg "Operation canceled"
  endif

Endsub

torn24
God
God
Messaggi: 5078
Iscritto il: venerdì 1 febbraio 2008, 11:28
Località: Modena

Re: macro per file .txt

Messaggio da torn24 » mercoledì 13 febbraio 2019, 9:05

macro è un nome generico applicabile a molti cnc! Il linguaggio macro non è universale "non è un unico linguaggio" ma ne esistono tanti!
Se il tuo software di controllo non è molto diffuso, non troverai molte persone che conoscano bene il linguaggio macro del tuo controllo.
Molte cose della macro si capiscono, perché sono simili a linguaggi molto diffusi, mentre la parte che scrive su file è difficile da individuare e da capire, se non si ha il manuale del linguaggio e se non si ha voglia di impararlo.
Allora suggerirei di elaborare il il file di testo in uscita, se questo file è sempre uguale, ossia se presenta solo righe simili a quelle che hai mostrato, sarebbe abbastanza semplice, altrimenti bisognerebbe sapere come è formato il file, ad esempio se le prime righe del file sono diverse o comunque come è fatto il file.
Ti potrei fare un piccolo programmino in C# che legga il file generato dalla macro, legge le prime tre coordinate e forma un nuovo file con sole le coordinate x y z.
Fammi sapere come è formato un file tipo!
Altra soluzione è imparare il linguaggio macro del tuo cnc, ma di certo io non mi metto a farlo :D
CIAO A TUTTI !

Diego
Member
Member
Messaggi: 560
Iscritto il: domenica 13 gennaio 2008, 15:18
Località: Vicenza

Re: macro per file .txt

Messaggio da Diego » mercoledì 13 febbraio 2019, 10:20

Ciao, grazie per la risposta, immaginavo fosse "personalizzato" il linguaggio di ogni scheda, già spulciando le macro di MACH3 vedevo abissali differenze di scrittura tra mach3 e la mia.
Ora vado di notepad e con il comando sostituisci X ( Y e Z) con "" ci arrivo vicino alla pulizia.

valutavo di eliminare questa riga dalla macro ;ZHCINIT gridSize nx ny e provare. appena ho tempo... per gli X, Y e Z continuo con "sostituisci" di notepad...

nella mia ignoranza nemmeno immaginavo che una macro "potesse" scrivere un file .txt con dati e numeri e i comandi di scrittura (leggendo il manuale) nel mio caso sono ZHCINIT, ZHCS. poi... un semplice ; se c'è o non c'è fa una differenza abissale in una macro.
dal manuale

Codice: Seleziona tutto

The Z height compensation interpreter commands
For your own use if you want to customize the working:
ZHCINIT <grid size in mm> <number of points in X> <number of points in Y>
This is the first command required before starting a measurement, it will reserve the correct amount of memory to store the measured points.
Using G38.2 will do the actual measurement.
ZHCADDPOINT will add the last measured point to the data.
ZHCS <fileName> will store the data to a file.
ZHCL <fileName> will load the data from a file.
ZHC [ON | OFF] will switch the compensation on.
#5051 contains 1 if ZHC is ON and 0 if OFF. This can be used for run time checks if the compensation is on. In case of tool change,
Grazie torn24, vi faccio sapere

torn24
God
God
Messaggi: 5078
Iscritto il: venerdì 1 febbraio 2008, 11:28
Località: Modena

Re: macro per file .txt

Messaggio da torn24 » mercoledì 13 febbraio 2019, 11:21

Una macro "in teoria" può richiamare qualunque codice se è progettata per farlo! Se un computer è in grado di farlo allora anche una macro potrebbe farlo. Nel tuo caso la macro richiama "un codice un programma non visibile" che scrive su file. Non esiste in tutti i linguaggi macro, nel tuo si :D :D
CIAO A TUTTI !

Rispondi

Torna a “G-code”