Cześć,
Przedstawiony projekt tym razem jest czysto programistyczny ale mam nadzieję że pasuje do tego działu i może dla kogoś okaże się interesujący lub przydatny w warsztacie. Celem projektu było stworzenie wygodnego w użyciu generatora kodu GCode do wykonywania płytek PCB na frezarce CNC. Płytki projektuję w programie KiCAD więc na tym formacie wejściowym się skupiłem. Wcześniej używałem do tego celu kombajnu FreeCAD ale czas konwersji, i ilość potrzebnych operacji skutecznie mnie do tego zniechęciła - obróbka jednej płytki potrafiła mi zająć kilka godzin, z czego większość czasu to czekanie az FreeCAD wszystko przeliczy.
Jak przy poprzednich projektach aplikację postanowiłem napisać w c# jako aplikacja Windows Forms przy użyciu Visual Studio. W efekcie powstała aplikacja za pomocą której w kilka minut można mieć wygenerowany kompletny kod GCode.
Funkcje:
-Generowanie kodu do frezowania ścieżek z uwzględnieniem wypełnionych stref
-Generowanie kodu do frezowania kształtu płytki wraz z ewentualnymi otworami
-Generowanie kodu do wiercenia otworów
-Możliwość wyboru warstwy TOP albo BOTTOM
-Automatyczne przesunięcie płytki do pozycji 0,0
-Możliwość zapisu ustawień
Opis działania :
Generowanie kodu GCode odbywa się w kilku etapach:
- Pierwszy etap odbywa się w momencie otwierania pliku PCB. Plik jest parsowany, wyszukiwane są wszystkie istotne elementy płytki i zapisywane w postaci wielokątów składających się z odcinków i łuków. Wypełnione strefy również są konwertowane do wielokątów. Po tym etapie płytka wygląda tak:
Jednocześnie w oknie konsoli wyświetla się lista wszystkich otworów, jest to przydatne żeby dobrać odpowiednie wiertła. To jest moment kiedy należy ustawić wszystkie parametry frezowania i wiercenia. Jeżeli teraz zostawimy domyślną opcję "ALL" i wciśniemy "RUN" to wszystkie następne etapy wykonają się sekwencyjnie a na koniec wyświetli się okno w którym należy wybrać miejsce gdzie ma być zapisany wygenerowany kod.
Można też te etapy wykonać po kolei pojedynczo.
- Kolejnym etapem jest łączenie wielokątów należących do ścieżek. W ramach optymalizacji czasu wykonywania łączone są tylko segmenty należące do tej samej sieci. Po wykonaniu tego etapu płytka wygląda następująco:
- W następnym kroku ścieżki łączone są z wypełnionymi strefami, również w obrębie sieci:
- Ostatnim etapem przygotowania do frezowania jest łączenie fragmentów wypełnionych stref które połączone są przez ścieżki:
- Wszystkie wielokąty są już gotowe więc w tym etapie następuje generowanie ścieżek frezowania w odpowiedniej odległości od przygotowanych wielokątów, osobno do frezowania miedzi i osobno do frezowania kształtu płytki.
- Kolejnym krokiem jest przetwarzanie otworów, dopasowanie do dostępnej listy wierteł, duże otwory są przeznaczane do frezowania.
- Finalnym krokiem jest generowanie kodu GCode na podstawie przygotowanych danych.
Czego brakuje:
Aktualnie nie jest zaimplementowane frezowanie powierzchni niewypełnionych - na razie tego nie potrzebowałem.
Nie jest sprawdzana poprawność płytki, trzeba odpowiednio dobrać średnicę frezu żeby nie przekraczała minimalnej odległości między ścieżkami.
Kod źródłowy dostępny jest na githubie, zachęcam do testowania i zgłaszania uwag i ewentualnych błędów.
https://github.com/r-gal/KiCAD2GCode
Przedstawiony projekt tym razem jest czysto programistyczny ale mam nadzieję że pasuje do tego działu i może dla kogoś okaże się interesujący lub przydatny w warsztacie. Celem projektu było stworzenie wygodnego w użyciu generatora kodu GCode do wykonywania płytek PCB na frezarce CNC. Płytki projektuję w programie KiCAD więc na tym formacie wejściowym się skupiłem. Wcześniej używałem do tego celu kombajnu FreeCAD ale czas konwersji, i ilość potrzebnych operacji skutecznie mnie do tego zniechęciła - obróbka jednej płytki potrafiła mi zająć kilka godzin, z czego większość czasu to czekanie az FreeCAD wszystko przeliczy.
Jak przy poprzednich projektach aplikację postanowiłem napisać w c# jako aplikacja Windows Forms przy użyciu Visual Studio. W efekcie powstała aplikacja za pomocą której w kilka minut można mieć wygenerowany kompletny kod GCode.
Funkcje:
-Generowanie kodu do frezowania ścieżek z uwzględnieniem wypełnionych stref
-Generowanie kodu do frezowania kształtu płytki wraz z ewentualnymi otworami
-Generowanie kodu do wiercenia otworów
-Możliwość wyboru warstwy TOP albo BOTTOM
-Automatyczne przesunięcie płytki do pozycji 0,0
-Możliwość zapisu ustawień
Opis działania :
Generowanie kodu GCode odbywa się w kilku etapach:
- Pierwszy etap odbywa się w momencie otwierania pliku PCB. Plik jest parsowany, wyszukiwane są wszystkie istotne elementy płytki i zapisywane w postaci wielokątów składających się z odcinków i łuków. Wypełnione strefy również są konwertowane do wielokątów. Po tym etapie płytka wygląda tak:
Jednocześnie w oknie konsoli wyświetla się lista wszystkich otworów, jest to przydatne żeby dobrać odpowiednie wiertła. To jest moment kiedy należy ustawić wszystkie parametry frezowania i wiercenia. Jeżeli teraz zostawimy domyślną opcję "ALL" i wciśniemy "RUN" to wszystkie następne etapy wykonają się sekwencyjnie a na koniec wyświetli się okno w którym należy wybrać miejsce gdzie ma być zapisany wygenerowany kod.
Można też te etapy wykonać po kolei pojedynczo.
- Kolejnym etapem jest łączenie wielokątów należących do ścieżek. W ramach optymalizacji czasu wykonywania łączone są tylko segmenty należące do tej samej sieci. Po wykonaniu tego etapu płytka wygląda następująco:
- W następnym kroku ścieżki łączone są z wypełnionymi strefami, również w obrębie sieci:
- Ostatnim etapem przygotowania do frezowania jest łączenie fragmentów wypełnionych stref które połączone są przez ścieżki:
- Wszystkie wielokąty są już gotowe więc w tym etapie następuje generowanie ścieżek frezowania w odpowiedniej odległości od przygotowanych wielokątów, osobno do frezowania miedzi i osobno do frezowania kształtu płytki.
- Kolejnym krokiem jest przetwarzanie otworów, dopasowanie do dostępnej listy wierteł, duże otwory są przeznaczane do frezowania.
- Finalnym krokiem jest generowanie kodu GCode na podstawie przygotowanych danych.
Czego brakuje:
Aktualnie nie jest zaimplementowane frezowanie powierzchni niewypełnionych - na razie tego nie potrzebowałem.
Nie jest sprawdzana poprawność płytki, trzeba odpowiednio dobrać średnicę frezu żeby nie przekraczała minimalnej odległości między ścieżkami.
Kod źródłowy dostępny jest na githubie, zachęcam do testowania i zgłaszania uwag i ewentualnych błędów.
https://github.com/r-gal/KiCAD2GCode
Fajne? Ranking DIY