# A head scratcher for me

11 Nov 2018 17:53 #120452
by rcKeith

Replied by

*rcKeith*on topic*A head scratcher for me*
Hi Andy

Changing the XY to UV plane made no difference still went fast on the UV axis. Damn.

Keith

Changing the XY to UV plane made no difference still went fast on the UV axis. Damn.

Keith

Please Log in or Create an account to join the conversation.

12 Nov 2018 11:40 #120484
by andypugh

Replied by

*andypugh*on topic*A head scratcher for me*
Pity, though it was more a hope than an expectation that changing plane would help.

What does the first few lines of your G-code look like?

What does the first few lines of your G-code look like?

Please Log in or Create an account to join the conversation.

12 Nov 2018 15:07 #120491
by rcKeith

Replied by

*rcKeith*on topic*A head scratcher for me*
Hi Andy

Here's the wing g-code for the left with UV on the big side attached is the full file. Here the first 30 or so lines

%

; Begin Header section

;hawk outer wing section

; root on left

G21

;UV plane selected

G17.1

G90

; End Header section

F 75.0000

; Switch On Hot wire

M3

; Go Home

G00 U 0.0000 V 0.0000 X 0.0000 Y 0.0000

; Go X Home

G00 U 0.0000 V 47.0717 X 0.0000 Y 17.2227

; Approaching Airfoil trailing edge

G01 U 0.0883 V 47.0717 X -0.0061 Y 17.2227 F 75.0000

; Begin Airfoil contour

G01 U 10.0376 V 47.0171 X 9.8755 Y 18.9244

G01 U 10.4867 V 47.0297 X 9.9371 Y 18.9339

G01 U 10.9357 V 47.0422 X 9.9987 Y 18.9434

G01 U 11.3846 V 47.0547 X 10.0604 Y 18.9530

G01 U 11.8335 V 47.0673 X 10.1220 Y 18.9625

G01 U 12.2822 V 47.0799 X 10.1836 Y 18.9717

G01 U 12.7309 V 47.0921 X 10.2452 Y 18.9809

G01 U 13.1796 V 47.1038 X 10.3068 Y 18.9901

G01 U 13.6281 V 47.1156 X 10.3684 Y 18.9993

G01 U 14.0766 V 47.1274 X 10.4300 Y 19.0085

G01 U 14.5250 V 47.1392 X 10.4916 Y 19.0176

G01 U 14.9734 V 47.1506 X 10.5532 Y 19.0268

G01 U 15.4217 V 47.1615 X 10.6148 Y 19.0362

G01 U 15.8699 V 47.1724 X 10.6763 Y 19.0456

G01 U 16.3181 V 47.1829 X 10.7378 Y 19.0552

G01 U 16.7662 V 47.1933 X 10.7994 Y 19.0647

G01 U 17.2142 V 47.2036 X 10.8609 Y 19.0742

G01 U 17.6621 V 47.2139 X 10.9224 Y 19.0838

G01 U 18.1100 V 47.2242 X 10.9839 Y 19.0934

Here's the wing g-code for the left with UV on the big side attached is the full file. Here the first 30 or so lines

%

; Begin Header section

;hawk outer wing section

; root on left

G21

;UV plane selected

G17.1

G90

; End Header section

F 75.0000

; Switch On Hot wire

M3

; Go Home

G00 U 0.0000 V 0.0000 X 0.0000 Y 0.0000

; Go X Home

G00 U 0.0000 V 47.0717 X 0.0000 Y 17.2227

; Approaching Airfoil trailing edge

G01 U 0.0883 V 47.0717 X -0.0061 Y 17.2227 F 75.0000

; Begin Airfoil contour

G01 U 10.0376 V 47.0171 X 9.8755 Y 18.9244

G01 U 10.4867 V 47.0297 X 9.9371 Y 18.9339

G01 U 10.9357 V 47.0422 X 9.9987 Y 18.9434

G01 U 11.3846 V 47.0547 X 10.0604 Y 18.9530

G01 U 11.8335 V 47.0673 X 10.1220 Y 18.9625

G01 U 12.2822 V 47.0799 X 10.1836 Y 18.9717

G01 U 12.7309 V 47.0921 X 10.2452 Y 18.9809

G01 U 13.1796 V 47.1038 X 10.3068 Y 18.9901

G01 U 13.6281 V 47.1156 X 10.3684 Y 18.9993

G01 U 14.0766 V 47.1274 X 10.4300 Y 19.0085

G01 U 14.5250 V 47.1392 X 10.4916 Y 19.0176

G01 U 14.9734 V 47.1506 X 10.5532 Y 19.0268

G01 U 15.4217 V 47.1615 X 10.6148 Y 19.0362

G01 U 15.8699 V 47.1724 X 10.6763 Y 19.0456

G01 U 16.3181 V 47.1829 X 10.7378 Y 19.0552

G01 U 16.7662 V 47.1933 X 10.7994 Y 19.0647

G01 U 17.2142 V 47.2036 X 10.8609 Y 19.0742

G01 U 17.6621 V 47.2139 X 10.9224 Y 19.0838

G01 U 18.1100 V 47.2242 X 10.9839 Y 19.0934

Please Log in or Create an account to join the conversation.

12 Nov 2018 15:20 #120494
by andypugh

Replied by

*andypugh*on topic*A head scratcher for me*
OK, my suggestion is that you set up LinuxCNC to run a filter on the G-code file that converts the file from G94 to G93.

The filter would compare the distances in the XY and UV planes and use the largest to calculate a G93 feed rate.

How is your Python? (I am willing to have a go, but I am at work at the moment so can't do it until later)

The filter would compare the distances in the XY and UV planes and use the largest to calculate a G93 feed rate.

How is your Python? (I am willing to have a go, but I am at work at the moment so can't do it until later)

Please Log in or Create an account to join the conversation.

12 Nov 2018 21:44 #120513
by rcKeith

Replied by

*rcKeith*on topic*A head scratcher for me*
Hi Andy

I've done a bit in Python but I not sure how I'd caluclate the feed rate. If you can point me in the right direction then I can have a go.

Thanks for your help

Keith

I've done a bit in Python but I not sure how I'd caluclate the feed rate. If you can point me in the right direction then I can have a go.

Thanks for your help

Keith

Please Log in or Create an account to join the conversation.

13 Nov 2018 02:21 #120524
by andypugh

Replied by

*andypugh*on topic*A head scratcher for me*
I have run out of time tonight, but this is close.

In the INI file add this to the [FILTER] section

Now save this at that path as filter.py

Now any gcode file with a .foam extension will run through that filter, example output:

It probably needs work, I am not sure that my G93 feedrate calculation is correct, but the structure is there.

In the INI file add this to the [FILTER] section

```
PROGRAM_EXTENSION = .foam foam
foam = /home/{YOUR USERNAME}/linuxcnc/filter.py
```

Now save this at that path as filter.py

```
#! /usr/bin/python
import re
import sys
import math
infile = sys.argv[1]
f = open(infile, 'r')
feedrate = 1
X = 0.0
Y = 0.0
U = 0.0
V = 0.0
oldX = X
oldY = Y
oldU = U
oldV = V
for line in f:
Ff = re.match(r".*F\s*([\d\.,]+)", line)
Xf = re.match(r".*X\s*([\d\.,]+)", line)
Yf = re.match(r".*Y\s*([\d\.,]+)", line)
Uf = re.match(r".*U\s*([\d\.,]+)", line)
Vf = re.match(r".*V\s*([\d\.,]+)", line)
G1f = re.match(r".*G\s*0*1\D", line)
if Xf:
X = float(Xf.group(1))
if Yf:
Y = float(Yf.group(1))
if Uf:
U = float(Uf.group(1))
if Vf:
V = float(Vf.group(1))
hXY = math.sqrt((oldX-X)**2 + (oldY-Y)**2)
hUV = math.sqrt((oldU-U)**2 + (oldV-V)**2)
if hXY > hUV and hXY != 0:
F93 = float(feedrate / hXY)
elif hUV != 0:
F93 = float(feedrate / hUV)
if Ff:
feedrate = float(Ff.group(1))
print "( feedrate = %f)" % feedrate
print "G93"
elif G1f:
print "%s F%f" % (line.rstrip(), F93)
else:
print line.rstrip()
oldX = X
oldY = Y
oldU = U
oldV = V
print "M2"
```

Now any gcode file with a .foam extension will run through that filter, example output:

It probably needs work, I am not sure that my G93 feedrate calculation is correct, but the structure is there.

Please Log in or Create an account to join the conversation.

13 Nov 2018 13:29 #120535
by rcKeith

Replied by

*rcKeith*on topic*A head scratcher for me*
Hi Andy

Thank you so much that awesome. I'll give it a try and let you know. Looks a nice peice of code

Keith

Thank you so much that awesome. I'll give it a try and let you know. Looks a nice peice of code

Keith

Please Log in or Create an account to join the conversation.

16 Nov 2018 10:59 #120826
by rcKeith

Replied by

*rcKeith*on topic*A head scratcher for me*
Hi Andy

Just tested on the machine and it works fantastic. Thank you so much. You're a wizard.

Keith

Just tested on the machine and it works fantastic. Thank you so much. You're a wizard.

Keith

Please Log in or Create an account to join the conversation.

Time to create page: 0.132 seconds