Avacam - własny CAD/CAM
: 17 kwie 2018, 19:21
Witam,
w parze ze sterowniczkiem musi iść program, który sprosta jego niekonwencjonalnym wymaganiom (przyjmuje pliki w postaci bezpośrednich komend dla silników krokowych, a nie gkodów). Projekt jest głównie edukacyjny (uczyłem się na nim programować) i jest napisany w języku C# korzystając z Winformów. Podobnie jak sterownik jest dostosowany do moich potrzeb, tzn. uzyskanie ciekawego efektu estetycznego bardziej, niż funkcjonalnej części w tolerancji do pojedynczych setek.
Założeniem było stworzenie aplikacji z minimalistycznym interfejsem, która pozwoli w szybki sposób tworzyć programy dla sterownika. Aplikacja w pełni 2D, na szczęście przy tokarce nie ma to znaczenia, a cały problem tworzenia brył przestrzennych odpada (wtedy bym się tego nie podejmował).
Funkcje programu
1. Rysowanie kształtu za pomocą linii i krzywych Beziera drugiego i trzeciego stopnia. Tym zestawem można osiągnąć prawie wszystko. Nie ma co prawda zwykłych promieni, ale to głównie dlatego, że nie są mi potrzebne - a tak czy inaczej byłyby aproksymowane za pomocą krzywych Beziera.
2. Automatyczne wymiarowanie. Każda figura posiada automatycznie generowany wymiar, który można zmieniać.
3. Tworzenie powtórzeń. Po zaznaczeniu figur można je skopiować wielokrotnie w określonym kierunku (coś jak rectangular pattern w fusion czy inventorze).
4. Określenie wymiarów materiału bazowego za pomocą długości oraz średnic wewnętrznej i zewnętrznej.
5. Wybór rodzaju obróbki - wewnętrzna lub zewnętrzna.
6. Generowanie ścieżek dla sterownika.
7. Funkcjonalność CTRL-Z/Y.
8. Szybkie menu kontekstowe na prawym przycisku z wyborem podstawowych narzędzi (linia, krzywa, powtórzenie i zaznacz).
9. Skalowanie i manipulacja przestrzenna modelem (2D).
(ehh, brzmi mało imponująco w porównaniu do czasu, jaki to zajęło, ale żeby to wszystko zrealizować pod maską musi się trochę niekoniecznie oczywistych rzeczy dziać.)
Film z działania programu
Na filmie pokazane jest w krótkiej formie większość opcji. Jakość filmu nie do końca oddaje działanie programu - mam wrażenie, że trochę topornie wygląda, w rzeczywistości wszystko śmiga w przysłowiowych 60FPSach.
Realizacja
Pomijając cały interfejs i silnik programu, napiszę tutaj nieco o sposobie, w jaki generowane są ścieżki. Otóż wykorzystałem do tego algorytmy graficzne służące do rysowania linii i krzywych Beziera, a konkretnie algorytmy Bresenhama. W ten sposób uzyskane zestawy punktów wyznaczają kroki dla silników krokowych. Uzyskany w ten sposób plik może być dosyć duży (kilkaset kB do kilku MB) w zależności od ilości kroków na obrót silnika itd, natomiast oddaje on bardzo wiernie narysowany kształt. Ścieżka jest poddawana drobnej optymalizacji, usuwane są elementy znajdujące się poza bazowym materiałem, a ruchy poza materiałem i nawroty wykonywane są z większą prędkością.
Wrażenia
Tak jak ze sterownika, tak i z tego programu jestem zadowolony (dopieszczałem je przez długi czas zanim zdecydowałem się je zaprezentować) - prościej chyba się nie da. Dla moich potrzeb, tj. toczenie uchwytów i innych dziwnych kształtów wszystko sprawuje się jak znalazł. Program jest bardzo "gładki" w działaniu, wszystko, co się tylko da jest zautomatyzowane, nawet udało się nadać temu trochę bardziej techniczny charakter - odrobinę wzorowałem się na rysunku technicznym - główny widok to pół-widok pół-przekrój, wymiary trochę nie tak, ale to najwygodniejsza z kilku implementacji, które próbowałem. Na pewno robienie tego programu nie było optymalnym rozwiązaniem (zwłaszcza biorąc pod uwagę darmowego Fusion360, o którym wtedy nie wiedziałem), natomiast miało sporą wartość edukacyjną dla takiego początkującego programistycznego amatora-hobbysty jak ja. No i było to wszystko bardzo satysfakcjonujące, bo to nieco poważniejszy program niż kalkulator czy liczenie silni
. Program jest już w takim stanie, że nie wstydziłbym się pokazać kodu źródłowego
i chociaż chodzi mi po głowie jeszcze kilka ewentualnych opcji (i kilka zaległych bugfixów), to póki co wersję 1.0 uznaję za skończoną.
PS. Mam nadzieję, że dział odpowiedni - swojego poddziału jeszcze nie mam
w parze ze sterowniczkiem musi iść program, który sprosta jego niekonwencjonalnym wymaganiom (przyjmuje pliki w postaci bezpośrednich komend dla silników krokowych, a nie gkodów). Projekt jest głównie edukacyjny (uczyłem się na nim programować) i jest napisany w języku C# korzystając z Winformów. Podobnie jak sterownik jest dostosowany do moich potrzeb, tzn. uzyskanie ciekawego efektu estetycznego bardziej, niż funkcjonalnej części w tolerancji do pojedynczych setek.
Założeniem było stworzenie aplikacji z minimalistycznym interfejsem, która pozwoli w szybki sposób tworzyć programy dla sterownika. Aplikacja w pełni 2D, na szczęście przy tokarce nie ma to znaczenia, a cały problem tworzenia brył przestrzennych odpada (wtedy bym się tego nie podejmował).

Funkcje programu
1. Rysowanie kształtu za pomocą linii i krzywych Beziera drugiego i trzeciego stopnia. Tym zestawem można osiągnąć prawie wszystko. Nie ma co prawda zwykłych promieni, ale to głównie dlatego, że nie są mi potrzebne - a tak czy inaczej byłyby aproksymowane za pomocą krzywych Beziera.
2. Automatyczne wymiarowanie. Każda figura posiada automatycznie generowany wymiar, który można zmieniać.
3. Tworzenie powtórzeń. Po zaznaczeniu figur można je skopiować wielokrotnie w określonym kierunku (coś jak rectangular pattern w fusion czy inventorze).
4. Określenie wymiarów materiału bazowego za pomocą długości oraz średnic wewnętrznej i zewnętrznej.
5. Wybór rodzaju obróbki - wewnętrzna lub zewnętrzna.
6. Generowanie ścieżek dla sterownika.
7. Funkcjonalność CTRL-Z/Y.
8. Szybkie menu kontekstowe na prawym przycisku z wyborem podstawowych narzędzi (linia, krzywa, powtórzenie i zaznacz).
9. Skalowanie i manipulacja przestrzenna modelem (2D).
(ehh, brzmi mało imponująco w porównaniu do czasu, jaki to zajęło, ale żeby to wszystko zrealizować pod maską musi się trochę niekoniecznie oczywistych rzeczy dziać.)
Film z działania programu
Na filmie pokazane jest w krótkiej formie większość opcji. Jakość filmu nie do końca oddaje działanie programu - mam wrażenie, że trochę topornie wygląda, w rzeczywistości wszystko śmiga w przysłowiowych 60FPSach.
Realizacja
Pomijając cały interfejs i silnik programu, napiszę tutaj nieco o sposobie, w jaki generowane są ścieżki. Otóż wykorzystałem do tego algorytmy graficzne służące do rysowania linii i krzywych Beziera, a konkretnie algorytmy Bresenhama. W ten sposób uzyskane zestawy punktów wyznaczają kroki dla silników krokowych. Uzyskany w ten sposób plik może być dosyć duży (kilkaset kB do kilku MB) w zależności od ilości kroków na obrót silnika itd, natomiast oddaje on bardzo wiernie narysowany kształt. Ścieżka jest poddawana drobnej optymalizacji, usuwane są elementy znajdujące się poza bazowym materiałem, a ruchy poza materiałem i nawroty wykonywane są z większą prędkością.
Wrażenia
Tak jak ze sterownika, tak i z tego programu jestem zadowolony (dopieszczałem je przez długi czas zanim zdecydowałem się je zaprezentować) - prościej chyba się nie da. Dla moich potrzeb, tj. toczenie uchwytów i innych dziwnych kształtów wszystko sprawuje się jak znalazł. Program jest bardzo "gładki" w działaniu, wszystko, co się tylko da jest zautomatyzowane, nawet udało się nadać temu trochę bardziej techniczny charakter - odrobinę wzorowałem się na rysunku technicznym - główny widok to pół-widok pół-przekrój, wymiary trochę nie tak, ale to najwygodniejsza z kilku implementacji, które próbowałem. Na pewno robienie tego programu nie było optymalnym rozwiązaniem (zwłaszcza biorąc pod uwagę darmowego Fusion360, o którym wtedy nie wiedziałem), natomiast miało sporą wartość edukacyjną dla takiego początkującego programistycznego amatora-hobbysty jak ja. No i było to wszystko bardzo satysfakcjonujące, bo to nieco poważniejszy program niż kalkulator czy liczenie silni


PS. Mam nadzieję, że dział odpowiedni - swojego poddziału jeszcze nie mam
