Bij het maken van printplaten met eagle en pcb-gcode heb ik gemerkt dat er heel inefficiente toolpaths worden geproduceerd door pcb-gcode. Verder heb ik dit ook regelmatig met andere programma's (je moet dan precies in de goede volgorde alles aanklikken).
Nu dacht ik hier moet een oplossing op te bedenken zijn. En zo ben ik begonnen een simpel stukje software te schrijven waarin je een bestaande g-code kunt laden en die vervolgens optimaliseren.
Dit wil ik doen door de code in stukken te hakken op de G00 commandos en ze opnieuw op een efficientere manier terug te plaatsen, zodat de totale beweging boven het werkstuk zo kort mogelijk is. Ik ben niet van plan het daadwerkelijke frezen aan te gaan passen!
Mijn eerste opzetje ziet er als volgt uit:
Een stukje software waarin de g-code geladen wordt (in dit geval drill.nc).
De software laat onderin het toolpath zien (alleen de rapid movements.. dus G00). Ook wordt er weergegeven hoeveel units (in dit geval millimeters) rapid movement er nodig zijn voor de total g-code.
In bovenstaande afbeelding kun je heel mooi zien hoe onhandig de freesbeweging is. Met name de blauwe tool kan veel beter horizontale sprongen maken...
Vervolgens kun je door "optimize" te klikken de code optimaliseren.
De g-code ziet er dan als volt uit:
Nu is het vinden van een goed algoritme nogal een gedoe...
Wat ik nu heb gedaan is simpelweg telkens het dichtsbijzijnde punt kiezen om naartoe te bewegen. Maar dit hoeft niet per sé in totaal de kortste route te zijn, want soms gebeurt het dat je in een hoek eindigt en alsnog het halve werkstuk moet oversteken.
Nu ben ik benieuwd of er hier mensen zijn die nog slimme ideen hebben om dit verder te verbeteren!
Groeten,
Douwe

