Strona 1 z 1

Avacam - własny CAD/CAM

: 17 kwie 2018, 19:21
autor: Avalyah
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ł).

Obrazek

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 :P. Program jest już w takim stanie, że nie wstydziłbym się pokazać kodu źródłowego :mrgreen: 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 :P

Re: Avacam - własny CAD/CAM

: 01 gru 2018, 14:57
autor: Zienek
Wraz z projektem hardware'owym to jest nie do pobicia.
Powiedz ile miesięcy :)

Kamar! Kamar! Zawołajcie Kamara! Tu się dzieje!

Re: Avacam - własny CAD/CAM

: 01 gru 2018, 15:44
autor: Avalyah
Dzięki :)
Zienek pisze:Powiedz ile miesięcy

Teraz już nie pamiętam, ale kilka ich było. Przy czym w sumie traktowałem to jako rozrywkę (zwłaszcza póki szło gładko :mrgreen:), więc nie było tak źle.

Od tego czasu ruszałem niewiele, ale kilka opcji generatora ścieżek uległo zmianie:
1. Dodałem rozróżnienie na ruch szybki i normalny z poziomu generowanej ścieżki (wcześniej sterownik sam się "domyślał" kiedy jest powrót i jechał wtedy ruchem szybkim). Przy okazji program uwzględnia teraz ruch wykonywany poza materiałem i automatycznie zamienia go na ruch szybki.
2. Rozpoznawanie przetoczonego materiału. Do tej pory po wykonaniu przejścia ścieżka była generowana zawsze poza kontur materiału, niezależenie od tego, co zostało już przetoczone. W przypadku np. przetaczania z fi50 na fi30 powodowało to, że generowane było dużo niepotrzebnych ruchów. Teraz program uwzględnia już to, co jest przetoczone.
Przed i po (prefabrykat ma tutaj fi20, różnicę widać w zielonych ścieżkach - w tym wypadku jest to powrót noża - które w wersji po znajdują się wewnątrz konturu i znacznie skracają ścieżkę zamiast za każdym razem wyjeżdżać poza).
ObrazekObrazek
3. Uproszczenie krzywych Beziera w obróbce zgrubnej. Jak się okazuje pocięcie krzywej Beziera na mniejsze elementy nie jest wcale takie proste i wymagałoby albo dość skomplikowanych operacji matematycznych, albo nieeleganckiego obejścia. W przypadku niektórych kształtów powodowało to, że ścieżki były prowadzone daleko poza kontur obrabianego detalu, a w przypadku obróbki wewnętrznej prowadziłoby wręcz do kolizji noża z detalem. Dlatego teraz jest opcja aproksymowania krzywych za pomocą linii (krok aproksymacji można zmieniać na mniejszy, lub większy) i nieruszane zostaje tylko ostatnie przejście zgrubne (i przejście wykańczające, jeżeli jest zaznaczone). Dzięki temu można je po aproksymacji ładnie przycinać.
Przed i po (prefabrykat wałek pełny fi50):
Obrazek
Obrazek
Przed i po (prefabrykat rura fi50x10, przed po prawej stronie mogłaby być kolizja noża z detalem, bo jest za bardzo "wycofany")
Obrazek
Obrazek

Re: Avacam - własny CAD/CAM

: 01 gru 2018, 15:47
autor: dance1
prosto i funkcjonalnie, tak jak powinno być, widzę ten program w zastosowaniach "architektura wnętrz", tralki, uchwyty itp, świetna sprawa.
Brawo.

Re: Avacam - własny CAD/CAM

: 01 gru 2018, 16:26
autor: Zienek
Pociągnę wątek Dance'a. Napewno miałeś jakąś potrzebę, która skłoniła Cię do porzucenia korbek. Bardziej drewno? Bardziej stal? Bo program, sterownik - ładnie pięknie, ale tokarkę pewnie wszyscy by chętnie w akcji zobaczyli :)

Re: Avacam - własny CAD/CAM

: 01 gru 2018, 19:20
autor: Avalyah
Aluminium akurat, no ale materiał nie ma znaczenia, jak tokarka pozwoli. Postaram się w nadchodzącym tygodniu nakręcić film w takim razie, skoro się podoba :) jakiś kawałek złomu przetoczę.

Re: Avacam - własny CAD/CAM

: 04 gru 2018, 17:54
autor: Avalyah
Zienek pisze:tokarkę pewnie wszyscy by chętnie w akcji zobaczyli


Proszę bardzo :D :


Film poglądowy, ze względu na to, że ustawienie telefonu praktycznie odebrało mi dostęp do tokarki popełniłem błąd opisany w filmie. Starałem się wszystko skrócić jak najbardziej i pokazać zarówno program, sterownik w wersji półautomatycznej i na koniec zaprojektowany na początku kształt.

Re: Avacam - własny CAD/CAM

: 05 gru 2018, 21:44
autor: kamar
Zienek pisze:
01 gru 2018, 14:57
Kamar! Kamar! Zawołajcie Kamara! Tu się dzieje!
Co się drze ? :)
Sprytne ale mało dla mnie. Jak na razie tralkę zrobiłem jedną za to bolszą i w/g projektu klienta.
Ale to nie zmienia faktu , że kolega super zdolny.
A teraz łyżeczka dziegciu :) Nie jest dobrym pomysłem prowadzenie noża po ścieżce zaczynającej się w X0.
Zemści się to niedługo przy bardziej złożonej obróbce.