logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Generator GCode do PCB z plików KiCAD

nuclear 13 Wrz 2025 18:24 3981 15

TL;DR LABEL_AI_GENERATED

  • Powstał generator GCode do wykonywania płytek PCB na frezarce CNC na podstawie plików KiCAD.
  • Aplikacja w C# jako Windows Forms parsuje plik PCB, zamienia ścieżki, strefy i otwory na wielokąty, a potem generuje trajektorie frezowania i wiercenia.
  • Wcześniej FreeCAD potrafił obrabiać jedną płytkę przez kilka godzin, a nowy program generuje kompletny GCode w kilka minut.
  • Obsługuje frezowanie ścieżek z wypełnionymi strefami, obrys płytki z otworami, wiercenie, warstwę TOP lub BOTTOM oraz automatyczne przesunięcie do 0,0.
  • Brakuje frezowania powierzchni niewypełnionych i kontroli poprawności PCB, więc trzeba samemu dobrać średnicę frezu do minimalnych odstępów.
Podsumowanie AI na podstawie dyskusji. Może zawierać błędy.
REKLAMA
Słuchaj:
  • Cześć,

    Okno aplikacji KiCAD2Gcode z podglądem PCB i parametrami frezowania

    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:
    Widok przetworzonego projektu PCB z zaznaczonymi ścieżkami i otworami
    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:
    Widok wygenerowanych ścieżek GCode dla projektu PCB z zaznaczonymi otworami

    - W następnym kroku ścieżki łączone są z wypełnionymi strefami, również w obrębie sieci:
    Podgląd ścieżek PCB z wielokątami i otworami w różnych kolorach

    - Ostatnim etapem przygotowania do frezowania jest łączenie fragmentów wypełnionych stref które połączone są przez ścieżki:
    Wizualizacja ścieżek PCB z wielokolorowymi liniami i oznaczeniami węzłów

    - 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.
    Widok ścieżek PCB z podziałem na warstwy i zaznaczonymi punktami obróbki CNC
    - 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
    O autorze
    nuclear
    Poziom 16  
    Offline 
    Specjalizuje się w: technika cyfrowa, fpga, arm
    nuclear napisał 194 postów o ocenie 145, pomógł 18 razy. Mieszka w mieście Siepraw. Jest z nami od 2003 roku.
  • REKLAMA
  • #2 21689110
    jarewa
    Poziom 35  
    Posty: 3147
    Pomógł: 229
    Ocena: 532
    nuclear napisał:
    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.


    A FlatCam nie używałeś?
  • REKLAMA
  • #3 21689125
    silvvester
    Poziom 25  
    Posty: 962
    Pomógł: 25
    Ocena: 168
    nuclear napisał:
    Aktualnie nie jest zaimplementowane frezowanie powierzchni niewypełnionych - na razie tego nie potrzebowałem.



    Prawdopodobnie bez wcześniejszego próbkowania powierzchni sondą niewiele sobie pofrezujesz, albo efekty wyjdą takie sobie.

    https://www.youtube.com/results?search_query=pcb+map+height+milling
    https://www.youtube.com/watch?v=7TRqrLqnKa0
  • #4 21689127
    jarewa
    Poziom 35  
    Posty: 3147
    Pomógł: 229
    Ocena: 532
    silvvester napisał:
    Prawdopodobnie bez wcześniejszego próbkowania powierzchni sondą niewiele sobie pofrezujesz, albo efekty wyjdą takie sobie.



    Tym to się zajmuje oprogramowanie CNC, wystarczy tylko mapa przejazdów i głębokość
  • REKLAMA
  • #6 21689334
    nuclear
    Poziom 16  
    Posty: 194
    Pomógł: 18
    Ocena: 145
    jarewa napisał:
    A FlatCam nie używałeś?


    Przyznaję że jak zaczynałem prace nad moim projektem to nie znałem tego narzędzia, może dlatego że szukałem konwertera dla plików z KiCAD a nie gerberów. Może bym się nie zdecydował na moje mniej uniwersalne narzędzie. Nie eksperymentowałem z FlatCam więc jeszcze nie mam porównania, ale obejrzę, natomiast już przez sam fakt potrzeby generowania gerberów mój konwerter jest szybsze - mniej operacji do wykonania przez użytkownika.

    silvvester napisał:
    Prawdopodobnie bez wcześniejszego próbkowania powierzchni sondą niewiele sobie pofrezujesz, albo efekty wyjdą takie sobie.


    To prawda, próbkowanie powierzchni jest mocno zalecane przy płytkach PCB, ale to już nie jest zadanie tego konwertera tylko sterownika CNC, W swojej frezarce to zrobiłem tak jak i automatyczny pomiar długości narzędzia - bardzo przydatne jak trzeba kilka razy zmienić narzędzie przy jednej płytce.

    slaw0 napisał:
    Do eagle jest wtyczka która generuje gcode w kilka sekund na starym notebooku z intel atom i 2 Gb ram.


    Eagle porzuciłem ze względu na ograniczzenia darmowej wersji a kupować nie zamierzam. Przestawiłem się na KiCAD więc dla tego formatu porzebowąłem narzędzie.
  • #7 21689364
    jarewa
    Poziom 35  
    Posty: 3147
    Pomógł: 229
    Ocena: 532
    nuclear napisał:
    natomiast już przez sam fakt potrzeby generowania gerberów


    KiCAD exportuje do gerberów jak i mapę wierceń. A FlatCAM używam i jest szybkie.

    nuclear napisał:
    Aktualnie nie jest zaimplementowane frezowanie powierzchni niewypełnionych - na razie tego nie potrzebowałem.


    Popracuj nad tym bo jak fajny programik to się przyda ta funkcja. Z chęcią będę korzystał
  • #8 21690599
    LechU
    Poziom 14  
    Posty: 66
    Pomógł: 3
    Ocena: 25
    Testuję (?) ten program, ale za każdym razem pojawia się takie okienko:

    Komunikat błędu z aplikacji KiCAD2Gcode informujący o nieobsługiwanym wyjątku

    Gdzie szukać błędu?
    Załączniki:
    • Error.txt (4.83 KB) Musisz być zalogowany, aby pobrać ten załącznik.
  • #9 21690797
    nuclear
    Poziom 16  
    Posty: 194
    Pomógł: 18
    Ocena: 145
    >>21690599

    Cześć, dzięki za zgłoszenie problemu, wygląda na to że brakuje obsługi niektórych nietypowych kształów padów, widać nigdzie takich w swoich płytkach nie użyłem i nie wyszło to u mnie. Nawet nie wiedziałem jak skomplikowane pady można zdefiniować w KICAD. :) Będzie oczywiście to poprawione. Probowałeś ładować inne projekty płytek? Ewentualnie jeżeli jest to możliwe to mógłbyś podesłać jakiś plik KiCAD PCB z którym są problemy żebym mógł to zreprodukować?
  • #10 21691129
    LechU
    Poziom 14  
    Posty: 66
    Pomógł: 3
    Ocena: 25
    I tu mnie coś zdziwiło: W archiwum w katalogu "TAK" są oryginalne pliki "*.kicad_pcb" pochodzące ze strony "http://mynor.org" - i one się otwierają poprawnie (?), zaś w katalogu "NIE" są te same pliki po moich kosmetycznych zmianach (chyba KiCAD 8.0) i one się nie otwierają (?). Na początku myślałem, że to wina KiCAD-a w wersji 9.0.4 którego używam, ale jednak nie...

    >>21690797
    Załączniki:
    • pack.7z (1.61 MB) Musisz być zalogowany, aby pobrać ten załącznik.
  • #11 21691153
    nuclear
    Poziom 16  
    Posty: 194
    Pomógł: 18
    Ocena: 145
    Dzięki za pliki do testów. Problem z ładowaniem się plików okazał się dość prosty, KiCAD 8.0 używa tabulatorów w swoich plikach, zamiast wcześniejszych spacji co powoduje błąd parsowania sieci. To naprawiłem natomiast jest jeszcze jeden problem który wysypuje aplikację na etapie łaczenia segmentów, jak to rozwiążę to wrzucę nową wersję.
  • REKLAMA
  • #13 21693238
    nuclear
    Poziom 16  
    Posty: 194
    Pomógł: 18
    Ocena: 145
    Wrzuciłem nową wersję v1.1 Pliki juz przetwarzają się poprawnie, można szukać kolejnych problemów i braków ;)
  • #14 21706565
    oscil1
    Poziom 24  
    Posty: 677
    Pomógł: 50
    Ocena: 184
    LechU napisał:
    Testuję (?) ten program, ale za każdym razem pojawia się takie okienko:

    Chyba autor zapomniał o try-catch
  • #15 21726559
    nuclear
    Poziom 16  
    Posty: 194
    Pomógł: 18
    Ocena: 145
    Cześć, trochę mnie nie było ale w końcu znalazłem chwilkę czasu i poprawiłem program, usunąlem kilka znalezionych w międzyczasie błędów i dodałem frezowanie niewypełnionych powierzchni. Wersja v1.4 jest wrzucona na githuba, zachęcam do przetestowania ;)

    oscil1 napisał:
    Chyba autor zapomniał o try-catch

    Nawet nie try-catch bo te akurat w istotnych miejscach są, tu brakowało zwykłego ifa na przekroczenie zakresu tablicy :/
  • #16 21738323
    Rozrabiakus
    Poziom 7  
    Posty: 8
    Ocena: 1
    >>21689125 dlatego PCB najlepiej malować na czarno i laserem farbę wypalać ;-)
Słuchaj:

Podsumowanie tematu

LABEL_AI_GENERATED
Omówiono projekt generatora kodu GCode do frezowania płytek PCB na frezarce CNC, bazującego na plikach KiCAD. Autor stworzył aplikację w C# (Windows Forms, Visual Studio), umożliwiającą szybkie generowanie kodu GCode bez konieczności konwersji do formatu Gerber, co przyspiesza proces w porównaniu do narzędzi takich jak FreeCAD. Dyskutowano o alternatywach, m.in. FlatCAM, który wymaga generowania Gerberów i jest popularny, ale bardziej czasochłonny. Podkreślono znaczenie próbkowania powierzchni sondą w celu uzyskania precyzyjnego frezowania, co realizuje sterownik CNC, nie sam konwerter. Autor wyjaśnił, że porzucił Eagle ze względu na ograniczenia darmowej wersji i skupił się na KiCAD. W trakcie testów aplikacji zgłoszono problemy z obsługą nietypowych kształtów padów i błędami parsowania plików KiCAD 8.0 (związanymi z tabulatorami zamiast spacji), które zostały poprawione w kolejnych wersjach (do v1.4). Dodano funkcję frezowania niewypełnionych powierzchni. Dyskusja zawierała także uwagi o konieczności stosowania zabezpieczeń programistycznych (np. if na zakres tablicy) oraz sugestie dotyczące malowania PCB i wypalania farby laserem jako alternatywnej metody obróbki.
Podsumowanie AI na podstawie dyskusji. Może zawierać błędy.
REKLAMA