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 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