Hulp met een Python script


bprosman

Golden Member

Zal eens kijken.
Hij loopt wel.

Wat is het bestand wat omgezet moet worden ?

code:

C:\Data\CO_Python>egxmake.py
usage: C:\Data\CO_Python\egxmake.py [-h] [-o FILE] [-m FILE] [-t TYPE]
                                    [-n NAME] [-p mm] [--no-warnings]
                                    [--no-info] [--no-fix] [--no-error]
                                    [--ack-feed-rate]
                                    GCODE-FILE
C:\Data\CO_Python\egxmake.py: error: the following arguments are required: GCODE-FILE

[Bericht gewijzigd door bprosman op 17 oktober 2019 11:58:08 (94%)]

De jongere generatie loopt veel te vaak zijn PIC achterna.

Precies, zover was ik ook al, @Zjokkeh welke foutmeldingen krijg jij als je het python script start ?

It's the rule that you live by and die for It's the one thing you can't deny Even though you don't know what the price is. It is justified.
bprosman

Golden Member

Misschien kan Zjokkeh het bronbestand wat geconverteerd moet worden hier plaatsen.

De jongere generatie loopt veel te vaak zijn PIC achterna.

Ik krijg die meldingen niet. Waarschijnlijk iets mis in mijn Python shell dan? Als ik egxmake start gebeurd er niets...

c code:

C:\Users\zjokk\Documents\EGX-20\Heavydeck\egxmake>python egxmake.py

C:\Users\zjokk\Documents\EGX-20\Heavydeck\egxmake>

Bronbestand:

bprosman

Golden Member

Als je Python goed installeert op je Windows 10 machine (daar ging ik even van uit) hoef je het commando Python niet eens in te typen maar zou egmake.py <enter> voldoende moeten zijn in een DOS/CMD box.

Python installer :
https://www.python.org/ftp/python/3.8.0/python-3.8.0.exe

[Bericht gewijzigd door bprosman op 17 oktober 2019 12:23:48 (17%)]

De jongere generatie loopt veel te vaak zijn PIC achterna.

Waarschijnlijk zit er ergens bij de installatie iets mis...

Op 17 oktober 2019 12:23:41 schreef Zjokkeh:
Waarschijnlijk zit er ergens bij de installatie iets mis...

Ik heb het opnieuw geinstalleerd en nu lijkt het script te werken, hij geeft alleen nog deze error:

c code:

C:\Users\zjokk\Documents\EGX-20\Heavydeck\egxmake>egxmake.py -o c:\test\test.nc
usage: C:\Users\zjokk\Documents\EGX-20\Heavydeck\egxmake\egxmake.py
       [-h] [-o FILE] [-m FILE] [-t TYPE] [-n NAME] [-p mm] [--no-warnings]
       [--no-info] [--no-fix] [--no-error] [--ack-feed-rate]
       GCODE-FILE
C:\Users\zjokk\Documents\EGX-20\Heavydeck\egxmake\egxmake.py: error: the following arguments are required: GCODE-FILE
bprosman

Golden Member

Je geeft met -o alleen je output bestand aan , niet je input.

het is : egxmake.py -o <uitvoerbestand> <te converteren bestand>

-h geeft je wat meer info :

code:

C:\Data\CO_Python>egxmake.py -h
usage: C:\Data\CO_Python\egxmake.py [-h] [-o FILE] [-m FILE] [-t TYPE]
                                    [-n NAME] [-p mm] [--no-warnings]
                                    [--no-info] [--no-fix] [--no-error]
                                    [--ack-feed-rate]
                                    GCODE-FILE

Generate a milling script for Roland EGX engravers from a G-Code script.

positional arguments:
  GCODE-FILE            A G-Code script file

optional arguments:
  -h, --help            show this help message and exit
  -o FILE, --out FILE   Write output to file
  -m FILE, --generate-meta FILE
                        Write .meta file
  -t TYPE, --layer-type TYPE
                        Layer type [DRILL TRACK MECH SILK], TRACK by default
  -n NAME, --layer-name NAME
                        Layer name, filename by default
  -p mm, --precision mm
                        Tool minimim precision
  --no-warnings         Don't print warnings
  --no-info             Don't print info
  --no-fix              Don't output 'needs fixing' messages
  --no-error            Don't print errors
  --ack-feed-rate       Acknowledge script feed rate instead of leaving it to
                        the machine.

C:\Data\CO_Python>

[Bericht gewijzigd door bprosman op 17 oktober 2019 13:03:28 (84%)]

De jongere generatie loopt veel te vaak zijn PIC achterna.

Ok, ik ben zover dat ik het script aan de praat krijg.

Dank aan iedereen hiervoor. Bij het compileren stuit ik nog op enkele errors. Waarschijnlijk G - codes die de Roland taal niet kent?

c code:

C:\Users\zjokk\Documents\EGX-20\Heavydeck\egxmake>egxmake -o c:\test\test.rol c:\test\test.nc
[FIX] Ignored opcode <G20 - Units: Inches>.
[FIX] Ignored opcode <G90 - Absolute coordinates>.
[FIX] Ignored opcode <G94 - Inches per minute>.
[NFO] Ignoring feed rate (3.15 inch/min -- 1 mm/sec)
[FIX] Ignored opcode <M3 - Spin CW>.
[NFO] Tool RPM must be set to 5000 RPM.
[NFO] Ignoring feed rate (3.15 inch/min -- 1 mm/sec)
[NFO] Ignoring feed rate (3.15 inch/min -- 1 mm/sec)
[WRN] Warning at 762: G01 with positive Z and non-null X/Y, ignoring Z.
Traceback (most recent call last):
  File "C:\Users\zjokk\Documents\EGX-20\Heavydeck\egxmake\egxmake.py", line 39, in <module>
    gcode.compile(conf)
  File "C:\Users\zjokk\Documents\EGX-20\Heavydeck\egxmake\gcode\compiler.py", line 278, in compile
    command()
  File "C:\Users\zjokk\Documents\EGX-20\Heavydeck\egxmake\gcode\compiler.py", line 234, in command
    move_linear()
  File "C:\Users\zjokk\Documents\EGX-20\Heavydeck\egxmake\gcode\compiler.py", line 202, in move_linear
    g.out_f.write('PD%d,%d;' % (inch2egx(cx), inch2egx(cy)))
TypeError: a bytes-like object is required, not 'str'

Is dit dezelfde test.nc file, die hierboven heeft geen 762 regels.

Hij wil met die inch2egx een waarde maal 2540 doen om millimeters te krijgen. Echter is een waarde die hij tegenkomt geen getal (byte) maar een tekst (str)

In de test.nc hierboven zie ik deze regels met 'Z':

code:


   (Feedrate_Z: 79.9998 mm/min)
   (Z_Cut: -0.2 mm)
   (Z_Move: 1.999 mm)
   (Z Toolchange: 12.7 mm)
   (Z Start: None mm)
   (Z End: 12.7 mm)
   G00 Z1.9990
   G01 Z-0.2000
   G00 Z1.9990
   G01 Z-0.2000
   G00 Z1.9990
   G00 Z1.9990
   G00 Z12.70

Geen G01 met positive Z en een aanwezige (non null) X en Y.

Eigenlijk heel veel dit:
G01 X1.3856 Y2.8025
G01 X0.9119 Y3.8865
G01 X0.9138 Y3.8769
G01 X0.9184 Y3.8629

Maar geen 762 regels

Ik vrees dat egxmake ook niet doet wat het moet. Ik vrees dat het apparaat voor de vuilbak is. De g-code maak ik met Flatcam. Die g-code probeer ik dan om te zetten met egxmake. Als ik de g-code in een simulator ingeef voert die dat perfect uit. Ik heb 1 programma gevonden dat een postprocessor heeft specifiek voor de egx-20 namelijk VCARVE, maar de kost een stuk uit je rug.

Mijn ideëen zijn op.

buckfast_beekeeper

Golden Member

Honing kan je importeren, bestuiving niet.

Bedankt voor de tip. Voorlopig nog geen succes hiermee.

Converteren naar een afbeelding en die weer importeren?

Het is geen rocket science. Moet toch te doen zijn. Nogmaals: kwam die error door dezelfde test.nc? file want die komt dan veel regels te kort.
Het kan zelfs zijn dat je door een simpel probleem met 'dos returns' nu het bestand niet kan omzetten..

Ik denk dat de EGX-30 en de EGX-20 niet dezelfde taal spreken. Als ik het het voorbeeld uit de sample dir naar mijn EGX-20 stuurde klopte het ook niet. De spindel draaide niet en het leek gewoon niet te kloppen. Misschien ligt de fout bij mij? Ik ben aan het experimenteren met Freemill.

De code lijkt me bijna handmatig in te kloppen:

Ga naar X,Y
Zakken Z
Ga naar X,Y

Etc.. voor beide talen... behalve wat uitzonderingen kan je 99% met één 'regexp-regel' aanpassen..

Als je een file hebt die wel werkt als voorbeeld wil ik het wel een gooi geven.

Je bedoeld een "roland-taal" file die op de machine "iets" deftig freest?

Op 17 oktober 2019 17:12:06 schreef Zjokkeh:
20\Heavydeck\egxmake\gcode\compiler.py", line 202, in move_linear
g.out_f.write('PD%d,%d;' % (inch2egx(cx), inch2egx(cy)))
TypeError: a bytes-like object is required, not 'str'[/code]

regel 202
TypeError: a bytes-like object is required, not 'str'

In python 2.x was dit mogelijk in 3.x niet

buckfast_beekeeper

Golden Member

Op 17 oktober 2019 22:19:22 schreef Zjokkeh:
Bedankt voor de tip. Voorlopig nog geen succes hiermee.

Neem eens contact op met Lex Lennings. De Nederlandse maker. Die is heel behulpzaam.

Honing kan je importeren, bestuiving niet.

Op 19 oktober 2019 07:30:07 schreef Zjokkeh:
Je bedoeld een "roland-taal" file die op de machine "iets" deftig freest?

Ja gewoon 'iets'. De taal is behoorlijk basic. Omzetten van inch naar mm
Dit:
G01 X1.3856 Y2.8025
G01 X0.9119 Y3.8865
G01 X0.9138 Y3.8769
G01 X0.9184 Y3.8629

Wordt zoiets:
PD3000,4000
PD2500,6000

Etc... je zou het in Excel kunnen doen. Degene die het python script schreef is een beetje doorgeslagen in de complexiteit, het decoderen wordt ook heel omslachtig gedaan..

Hoi,

Het is mij dan uiteindelijk gelukt. Via Flatcam, met posprocessor MDX-20 op schaal x 2.54. Wat foefelen met de diameter en freesdiepte, et voila:

Nen dikke mercie aan alle meedenkers hier! _/-\o_ :>

Nog een voorbeeldje dat ik vandaag gemaakt heb...

elmowww

Golden Member

Dat ziet er niet slecht uit voor een apparaat dat je bijna in de vuilbak gegooid had! Goed gedaan :)

PA0EJE - www.eje-electronics.nl - e.jongerius[aapje]eje-electronics.nl - EJE Electronics - Elektronica/firmware ontwikkeling

Tnx Elmowww. JA stel je voor zeg... Ik krijg het soms nogal snel op mijn systeem. :D 8)7

Op de foto zie je de cutter waar de EGX-20 mee freest. Jammer genoeg zijn er geen boortjes in dit formaat, anders kon ik in één keer de gaatjes ook boren.