sobota, 29 grudnia 2012

Z88 Aurora - obliczenia MES pod Linuksem

Z88 Aurora jest darmowym (freeware) oprogramowaniem służącym do wykonywania obliczeń wytrzymałościowych metodą elementów skończonych. Poniższy post zawiera wskazówki dotyczące uruchomienia Z88 pod Linuksem i prosty przykład obliczeń wykonanych na bryle zapisanej w formacie STEP.

Z88 do wersji V14 był wydawany na licencji GPL i można znaleźć go w repozytoriach. Znacznie przyjaźniejszy użytkownikowi Z88 Aurora nie mógł zostać na niej wydany (odsyłam do FAQ programu) i należy pobrać go ze strony projektu. Rozpowszechniana jako freeware Aurora jest dostępna (obok wersji dla Windows i OS X) tylko dla 64-bitowym wersji Linuksa.

Instalację należy przeprowadzić zgodnie (rozpakowanie, nadanie uprawnień) z instrukcją dostępną na w/w stronie. Brakujący plik libTKFillet.so.0 w katalogu ubuntu64 można skopiować z katalogu suse64 (w bibliotekach Ubuntu 12.04 i 12.10 znajduje się tylko nowszy libTKFillet.so.2).
Źródłem problemów może być też przecinek używany w języku polskim jako separator dziesiętny. Pomogło ustawienie angielskiego formatu wyświetlania liczb - w Ubuntu: Ustawienia systemu...-Języki-Ustawienia regionalne.


Prosty projekt

Zakładam, że udało się bezproblemowo uruchomić Z88 Aurora. Przykład będzie polegał na zamodelowaniu dwuteownika w programie FreeCAD i zaimportowaniu go oraz obliczeniu naprężeń w Aurorze. Przykład jest banalny by można łatwo zweryfikować jego poprawność.

Utworzyłem model dwuteownika szerokostopowego HEB 100 o długości 1000 mm. FreeCAD używa milimetrów, a biblioteka materiałów Z88 milimetrów i niutonów. Nie ma tu problemu niezgodności programów. 


 Zaznaczyłem bryłę i wyeksportowałem ją do pliku STEP.


Pierwszą rzeczą, którą trzeba zrobić po przejściu do Z88 jest utworzenie nowego projektu. Klikamy New i tworzymy pusty katalog. W tym katalogu będą znajdować się wszystkie pliki związane z obliczeniami. Są one zapisywane na bieżąco i mają postać czystego tekstu.
Następnie klikamy na ikonę dyskietki z napisem .STP i importujemy wcześniej zapisany plik STEP.


Widok można przesuwać lewym przyciskiem myszy, obracać prawym i przybliżać kółkiem. Przyciski Shaded, Surface Mesh, Mesh i Picking zmieniają widoczność obiektu.


Większość programów MES dzieli się na trzy części:
  • preprocesor, gdzie tworzymy siatkę oraz nadajemy więzy o obciążenia,
  • solwer, który dokonuje obliczeń,
  • postprocesor, gdzie można zobaczyć wyniki.
Wybierzmy Pre-processor by utworzyć siatkę. Tu warto się zatrzymać przy wyborze elementów na które ma zostać podzielony obiekt. Od typu wybranego czworościanu (linear lub quadratic) będzie zależał czas wykonywania obliczeń ich dokładność, a także ilość użytej pamięci.


Podręcznik programu (znajdujący się razem z Z88) opisuje różnice w ten sposób:

Tetrahedron No. 17
- Linear shape functions
- Quality of displacements bad
- Stresses in the Gauss points inaccurate
- Stresses in corner nodes very inaccurate
- Computing effort: medium
- Size of element stiffness matrix: 12  12

Tetrahedron No. 16
- Quadratic Isoparametric Serendipity element
- Quality of displacements very good
- Stresses in the Gauss points very good
- Stresses in corner nodes good
- Computing effort: very high
- Size of element stiffness matrix: 30  30
Przy pierwszej próbie nie ma sensu przeciążać komputera, stąd wybieram pierwszą opcję (linear). Value określające dokładność siatki (im niższa wartość tym dokładniejsza) ustawiłem na 10.


Kolejny krok to wybranie miejsc które będą utwierdzone lub obciążone. W Picking należy wybrać Select nodes (Select surfaces przydatne jest tylko dla obciążenia ciśnieniem).
Zakładam, że czoło dwuteownika będzie utwierdzone, a przeciwna końcówka półki będzie obciążona siłą. To podstawowy przypadek rozważany na zajęciach z wytrzymałości materiałów, gdzie belka jest jednym końcem zamurowana w ścianie, na drugi koniec ktoś naciska (pierwszy przykład).

Zaznaczam jeden punkt (węzeł) na czole, trzymając wciśnięty [Ctrl]. Punkty można powiększać lub zmniejszać (zielony "+" lub czerwony "-") by ułatwić sobie zaznaczanie.


Wybranie przycisku Surface (kąt ustawiony na 0, ustawienie tego kąta dla powierzchni wypukłych/wklęsłych szeroko opisuje podręcznik użytkownika) spowoduje zaznaczenie pozostałych węzłów na powierzchni czołowej. Wybieram Add set i nazywam go "zamurowanie".



Klikam De-select all by odznaczyć wszystko i mogę przystąpić do zaznaczania kolejnych węzłów. W ten sam sposób zaznaczam węzły na półce, ale jeszcze nie wybieram Add set.


Chcę obciążyć tylko fragment powierzchni. Obracam widok i trzymając [Shift] odznaczam zaznaczeniem prostokątnym niepotrzebne węzły. Teraz mogę dodać pozostałe jako "obciazenie".


Przechodzę do panelu Constraints. Wybieram węzły, które mają być utwierdzone ("zamurowanie") i ustawiam przemieszczenia (Displacements) w kierunku X, Y i Z na 0.


Dodaję siły do powierzchni nazwanej "obciazenia" zaznaczając Surface load. Tu trzeba zwrócić uwagę na układ współrzędnych. W moim przypadku było to -10000[N] wzdłuż Y.


Koniecznie trzeba przypisać materiał do elementu. Można to zrobić po kliknięciu na ikonę III. Wybrałem stal konstrukcyjną S235JR.


Przechodzimy do wyboru solwera, który obliczy odkształcenia i naprężenia zredukowane (wg Hubera albo, wg twórcy programu, von Misesa). Tu znów muszę odesłać do dokumentacji programu, która opisuje każdy z solwerów. Wybrany przeze mnie PARDISO nadaje się, z uwagi na pamięciożerność, tylko do mniejszych projektów. Jest za to bardzo szybki - obliczenie dwuteownika zajęło mojemu komputerowi może ze 3, 4 sekundy.
Przy dużych projektach konieczne jest wybranie SICCG albo SORCG.


Pozostało przejście do postprocesora i obejrzenie wyników. 



Maksymalne ugięcie wyniosło 3,64 mm a naprężenia w węzłach 120 N/mm^2, czyli 120 MPa.

Czy te wyniki mają jakikolwiek sens. Tak prosty przykład można policzyć ręcznie w celu sprawdzenia.

Maksymalny moment zginający to:
M=F*l=10 000 N*1000 mm=10 000 000 Nmm

Wskaźnik na zginanie dla HEB 100 wynosi:
Wx=90000 mm^3

Stąd naprężenia:
Sig=M/W=10 000 000 Nmm/90 000 mm^3=111 N/mm^2=111 MPa

Strzałka ugięcia dla tak utwierdzonej belki opisana jest wzorem:
f=F*l^3/(3*E*J), gdzie:
E - moduł Younga,
J - moment bezwładności przekroju.

Stąd:
f=10 000 N*(1000 mm)^3/(3*206 000 N/mm^2*4,5*10^6 mm^4)=3,6 mm

Tyle na dziś

Wykonanie całości zajęło około kwadransa. Pliki można pobrać stąd. W przypadku grubych błędów krzyczeć, miałem prawo się pomylić. W końcu sobota.

Szczęśliwego Nowego Roku!

Bonus

 

niedziela, 23 grudnia 2012

BricsCAD V13 dla Linuksa - kolejny skok jakościowy

Liczba zmian w każdej wersji począwszy od V10, pierwszej wydanej na Linuksa, potrafi zrobić wrażenie. Tutaj wspominałem o nowościach w wersji V12, czyli między innymi o modelowaniu bezpośrednim i więzach 2D oraz 3D. Wersja V13 przynosi przede wszystkim modelowanie złożeń i analizę kinematyczną. Dokładniejszą prezentację głównych cech programu można znaleźć na stronach Bricsys.



Ciekawostką jest e-book BricsCAD dla użytkowników AutoCAD (link do pobrania), w którym sporo miejsca poświęcono opisowi korzyści i strat wynikających z użycia BricsCAD-a na Linuksie. Wspomniano też, że dąży się to tego by wersja linuksowa jak i windowsowa były identyczne.

Wzrost funkcjonalności był możliwy dzięki zakupowi "technologii" rosyjskiej firmy LEDAS.
BricsCAD (wtedy jeszcze Bricscad) zaczynał jako tańszy klon AutoCAD-a, czyli zwykła "komputerowa deska kreślarska". Dziś program można wykorzystywać zupełnie inaczej, używając modelowania bryłowego, więzów, złożeń, automatycznych list materiałów/części (ang. BOM). I to wszystko przy niskich kosztach, które przy wykorzystaniu Linuksa mogą być jeszcze niższe.

Wersję 30-dniową można pobrać ze strony producenta (DEB 32 i 64-bit, RPM, TGZ, PISI).


Pełny opis wydania.
Ciekawy artykuł o BricsCAD-zie.

Starsze wpisy o BricsCAD-zie:

czwartek, 13 grudnia 2012

Już po Humble "Win" Bundle - rekordu nie było

Ups. Miało być Humble THQ Bundle. Skończyło się na $5 097 550,77, co oznacza, że rekord dalej należy do Humble Indie Bundle V i wynosi odrobinę więcej, bo $5 108 642,50. Sukces, porażka? O tym dalej.

Najpierw przypomnijmy sobie cechy charakterystyczne wcześniejszych Humble Bundle:
  1. Gry wydane na kilka platform, czasami wręcz portowane z pomocą zespołu HB.
  2. Brak jakiegokolwiek DRM.
  3. "Płać ile chcesz".
  4. Wsparcie dla organizacji charytatywnych.
  5. Promocja gier indie tworzonych przez małe studia.
W przypadku Humble THQ Bundle wyglądało to inaczej:
  1. Gry tylko na Windows.
  2. DRM pod postacią zabezpieczeń Steama[1]. Pojawiły się wręcz problemy z uruchomieniem jednej z gier w Niemczech - Niemcy mają inne, ocenzurowane, wersje gier.
  3. Minimalna wpłata do uzyskania gier to $1. Trzy (+jedno DLC) z dziewięciu gier wymagało przekroczenia średniej wpłat.
  4. Wśród instytucji charytatywnych nie było tym razem EFF.
  5. Promocja tzw. gier AAA upadającego molocha.
Punkt 4 wymaga trochę więcej wytłumaczenia. Electronic Frontier Foundation ma na celu (za wiki):

walkę o wolności obywatelskie (takie jak prawo do anonimowości, prywatności i wolności słowa) w elektronicznym świecie (prawa cyfrowe).

THQ w przeszłości nie określało się jasno w sprawie regulacji SOPA, ich słowa można było wręcz odczytać jako "milczące wsparcie" tych regulacji:
Undeclared. THQ got in touch to say they “don’t have an individual statement on this”, but encourage us to pursue a statement from the ESA. We are, of course.
Czy te dwie sprawy mają związek? Być może to zwykły przypadek...

Sukces?

Po pierwszych kilku dniach i 3 milionach dolarów ogłoszono wielki sukces akcji. Notowania giełdowe THQ poszły w górę.
Później nie było tak dobrze. THQ Bundle jest jedynym znanym mi przypadkiem, gdy średnia wpłat przez długi czas spadała. Ostatecznie, po wzroście na koniec, zatrzymała się na $5,76. To niewiele za 9 gier AAA, z których wyprodukowanie każdej kosztowało kilkanaście, a może nawet kilkadziesiąt milionów dolarów.
Dla porównania, średnia w rekordowym Humble Indie Bundle V wyniosła $8,53. Podejrzewam, że THQ spodziewało się trochę innej kwoty.

Zasycili rynek kilkoma milionami kopii swoich gier (sprzedano 885 301 paczek). To musi mieć negatywny wpływ na sprzedaż w najbliższym okresie. THQ zanotowało w ostatnim roku 240 milionów strat. Na co starczy 5 milionów (minus datki charytatywne) z Humble Bundle?


Zagrożenie?

Humble Bundle straciło na renomie wyrzekając się swych pierwotnych zasad. Osłabiło też pewnie swoją pozycję w kontaktach z twórcami. Jak mają ich przekonać do wydania gier bez DRM? Albo do wykonania portów?
Akcji podobnych do Humble Bundle jest wiele, ale tylko to ostatnie cieszyło się wyjątkową renomą. Renomą wynikającą z jasnej polityki.

[1] Steam sam w sobie nie jest synonimem DRM, ale może dostarczać narzędzia umożliwiające wprowadzenie DRM. Tak było w tym przypadku.

niedziela, 9 grudnia 2012

Filozofia współczesnego modelowania CAD 3D (Wstęp)

Obecne oprogramowanie CAD wymaga obrania pewnej drogi podczas modelowania, tak aby późniejsza rozbudowa lub modyfikacja modelu była efektywna. Nie wystarczy już nauka samych funkcji programu. Bo co z tego, że wiemy jak zamodelować wałek, skoro późniejsza pojedyncza zmiana spowoduje "rozsypanie się" modelu lub wymuszenie ręcznego wprowadzenia kolejnych kilkunastu zmian.

Tekst ten jest zbiorem odrobiny informacji wynikających z własnego doświadczenia powstałego w wyniku obcowania z programami CAD. Każdy punkt będzie opisywany na przykładzie dostępnego dla każdego programu FreeCAD.  Dodatkowo znajdą się krótkie uwagi jak te same operacje wyglądałyby w komercyjnym programie PTC Pro/ENGINEER[1], dostępnym na Linuksa do wersji Wildfire 3, obecnie przemianowanym na PTC Creo. Nowsze wersje: Wildfire 4 i Wildfire 5 (nazwany potem Creo 1.0) nie różnią się drastycznie możliwościami i interfejsem od WF 3. Dopiero Creo 2.0 przynosi sporo zmian - nie będę o nim wspominał, bo jeszcze z nim nie obcowałem.

[1] Nie będzie jednak zrzutów ekranu. Raz, że nie stać mnie na prywatną kopię Pro/E. Dwa, ze Creo 2.0, dostępne jako trial, nie ma wersji na Linuksa.

Banalny przykład

Jako przykładowy element do zamodelowania posłuży nam cześć zwana "flanszą". Chodzi mi tu o kołnierz często osadzany na końcach wałów maszyn z wykorzystaniem wpustu i otworami do przykręcenia tarczy lub innego kołnierza.

Drzewo (historia) cech

Warsztat Part Design z FreeCAD-a ma najwięcej wspólnego z modułem pojedynczej części znanym z innych programów CAD. Czy to w nim czy w Pro/E, po lewej stronie zobaczymy drzewo cech (ang. features), zawierające takie elementy jak szkice, wyciągnięcia, obroty (bryły obrotowe), fazy. Nie należy ich traktować jako osobnych elementów, a jako kolejne fazy modelowania bryły. Każda z cech ma wpływ na kolejne i na bryłę końcową, stąd można wprowadzać zmiany wracając do wcześniejszych (historycznych) cech.


W przyszłości, w FreeCAD-zie ma zostać wprowadzony obiekt Main Body, zbierający razem wszystkie cechy i zabezpieczający przed uszkodzeniem historii.
Dodatkowo można sprawdzić zależności (przydatne przy bardziej skomplikowanych drzewach) używając menu Tools-Dependency graph...


Pro/E: Drzewo wygląda podobnie jak w FreeCAD-zie. Umożliwia kilka dodatkowych operacji, jak np. przesuwanie cech w górę i dół drzewa.


Szkice

Praktycznie każda bryła jest tworzona z dwuwymiarowego szkicu przez wyciągnięcie, obrót lub inną operację. Utwórzmy szkic  na płaszczyźnie XY, z którego zbudujemy bryłę obrotową.


Zaczynamy rysować zgrubny kształt bez przywiązywania wagi do dokładności. Ważne jest by szkic był zamknięty. Dopiero później dodajemy więzy ustalając długości i położenie kolejnych odcinków oraz ich wzajemne relacje.  
Po lewej stronie widoczny jest licznik wolnych stopni swobody, dodawanie więzów można dopiero zakończyć, gdy wszystkie stopnie swobody zostaną zablokowane.  


Objawia się to dodatkowo  zmianą koloru szkicu na zielony. Ewentualnie może pojawić się komunikat o zastosowaniu sprzecznych, bądź wzajemnie dublujących się więzów. Wyjściem jest usunięcie problematycznych więzów.
Do ustalenia tego szkicu użyłem tylko więzów "pionowo" i "poziomo" oraz "punkt na obiekcie".

Wyjaśnienie należy się w kwestii użytych wymiarów. FreeCAD dopuszcza kilka rodzajów wymiarów: "zwykłą" odległość/długość, która może być ustawiona pod dowolnym kątem i jest zawsze dodatnia, oraz odległości ograniczone tylko do pionu lub poziomu i przybierające wartości zarówno dodatnie jak i ujemne. Należy unikać wymiarów pierwszego typu, bo tworzą one szkice mające wiele rozwiązań i będące podatne na nieprzewidziane zmiany kształtu podczas modyfikacji.
Drobna kwestia: ustaliłem odległość między największym promieniem kołnierza a samą tuleją (częścią o mniejszym promieniu) by zabezpieczyć się przed zniknięciem tej części kołnierza podczas późniejszych modyfikacji.

W szkicu powinno unikać się używania faz i zaokrągleń, które można dodać później. Dzięki temu upraszcza się szkic i można uzyskać pośredni, model przydatny np. do analiz metodą elementów skończonych (MES, ang. FEM).

Zwykle tworzenie szkicu przebiega wg procedury:
  1. Zgrubne narysowanie kształtu.
  2. Doprecyzowanie kształtu przez zastosowanie więzów.
  3. Ustalenie pozycji szkicu względem referencji (np. początku układu współrzędnych).
Skomplikowane szkice można budować po kawałku, powtarzając punkty 1 i 2.


Pro/E: Działanie szkicownika jest podobne, z tym, że tworzone są tam tzw. wymiary słabe (oznaczone na szaro), które symbolizują wolne stopnie swobody. Należy doprowadzić do usunięcie wszystkich słabych wymiarów. Pro/E używa pojedynczego, bardzo rozbudowanego narzędzia wymiarowania: można ustawiać wymiary poziomo, pionowo, normalnie do obiektu czy nawet wybierać między promieniem a średnicą.

Tworzenie bryły ze szkicu

Utwórzmy bryłę obrotową, mając zaznaczony wcześniejszy szkic.


Jako oś obrotu wybierzmy oś poziomą. Po wykonaniu tej operacji szkic w drzewie zostaje wciągnięty pod cechę Revolution. Jeśli operacja się nie powiodła, sprawdźmy czy szkic jest na pewno zamknięty i czy jego obrócenie nie powoduje podcinania bryły przez nią samą.

Zamiast osi poziomej można na tym samym szkicu narysować linię i po ustawieniu jej jako konstrukcyjnej, wykorzystać jako oś obrotu. 

Pro/E: Główną różnicą jest konieczność narysowania osi obrotu już w samym szkicu. Trochę inna jest też typowa kolejność działań. Wybiera się najpierw sposób tworzenia bryły, a dopiero potem płaszczyznę i na koniec przystępuje się do rysowania szkicu.

Wycięcia

Usuwanie materiału działa w podobny sposób jak jego dodawanie. Należy tu jednak koniecznie wybrać powierzchnię bazową znajdującą się na bryle. Wybierzmy czoło flanszy by zacząć szkicować przekrój rowka pod wpust.


Pro/E: Komercyjny CAD PTC wybacza w tym przypadku znacznie więcej niż FreeCAD. Przekrój wycięcia można rysować na dowolnej płaszczyźnie, w tym na dodatkowych płaszczyznach dodanych przez użytkownika. Szkice czasami nie muszą być nawet zamknięte - wystarczy wybrać z której strony linii ma być usuwany materiał.

Zewnętrzne referencje szkicownika i linie konstrukcyjne

Referencje geometrii zewnętrznej pozwalają łączyć szkic więzami z krawędziami lub punktami istniejącej już bryły. Szkicownik FreeCAD-a domyślnie oznacza te referencje kolorem fioletowym i mogą one powstać tylko z krawędzi leżących na płaszczyźnie szkicowania.


Wybrałem tu wewnętrzny okrąg, dzięki czemu rowek na wpust będzie podążał za zmianami średnicy wewnętrznej kołnierza. Głębokość rowka powinna być liczona od średnicy otworu. Stąd zastosowanie poziomej linii konstrukcyjnej.


Linie konstrukcyjne są domyślnie oznaczone kolorem niebieskim i powstają w wyniku konwersji zwykłych linii. W przeciwieństwie do nich nie są jednak uwzględniane w przekroju tworzonej bryły.
Uwaga: szkic musi być zamknięty, stąd powyżej, co jest słabo widoczne z uwagi na referencyjny okrąg, użyłem nie tylko trzech linii prostych ale i łuku.
Wykorzystałem także więz[1] symetrii. Powinno używać się go dość wcześnie, ponieważ odbiera zwykle kilka stopni swobody. Wstawiony późno może prowadzić do konfliktów.
[1] Według słownika nie istnieje słowo więz. Potrzebuję jednak tłumaczenia dla ang. słowa constraint.


Pro/E: Jego wyższością jest fakt krawędź referencyjna możne znajdować się również na innych równoległych płaszczyznach.

Wycięcia c. d.

Pozostaje wybrać, co ma ograniczać długość wycięcia. W tym przypadku chcę, żeby przebiegało przez całość otworu, niezależnie od tego jaki długi on jest.


Dlatego wybieram opcję "Przez wszystko".

Pro/E: Określanie długości wycięcia odbywa się analogicznie.

Otwory rozmieszone obwodowo (elementy powtarzające)

Nie ma sensu rysowania każdego otworu osobno. Wystarczy narysować jeden i powielić go.


Wybieram płaszczyznę szkicowania i od razu zaznaczam dwie krawędzie, które wykorzystam jako referencje. Chcę by otwory były zawsze prawidłowo umiejscowione i ich położenie podążało za wymiarami bryły kołnierza.


Rysuję dwie pionowe linie konstrukcyjne łączące referencyjne okręgi. Nadaję tym liniom więz "równa długość".


Mogę teraz ustalić otwór dokładnie w połowie odległości między oboma okręgami. Wydaje się to sensownym pomysłem, biorąc pod uwagę, że potrzebujemy miejsca na symetryczny element jakim jest łeb śruby lub podkładka.

Pro/E: Komercyjny program daje więcej możliwości w ustalaniu pozycji szkicu. Można np. wiązać wymiary prostymi relacjami w stylu sd1=sd3/4. Ma też narzędzie przeznaczone tylko do tworzenia otworów okrągłych, które zwalnia z konieczności tworzenia szkicu i może przyspieszyć pracę.


Kolejny krok to utworzenie powielenia biegunowego. Otwór zostanie skopiowany wokół osi bryły. Dodatkowo zaletą jest to, że średnica i położenie każdego z otworów będą zawsze zależne od otwory wzorcowego.

Wprowadzanie zmian 

Spróbujmy zmienić któryś element w historii cech np.:
  • wymiary szkicu bryły obrotowej,
  • ilość i średnicę otworów,
  • rozmiar rowka wpustowego.

W prawidłowo zbudowanym modelu, zmiany te nie powinny zmuszać użytkownika do wykonywania dodatkowych czynności (naprawiania modelu). 


Spostrzegawczy użytkownik zauważy, że drzewo cech przypomina uproszczoną listę czynności potrzebną do wykonania takiego elementu w metalu. Zamiast bryły obrotowej można by użyć dwóch występów (ang. pad) nałożonych na siebie, ale czy to rozwiązanie byłoby wygodne przy edycji? Raczej nie.

Pro/E: Wprowadzanie zmian odbywa się w analogiczny sposób. Jest kilka dodatkowych opcji, np. edycja wymiarów szkicu z lub bez otwierania go samego (odpowiednio Edit definition i Edit). Przydatne są też narzędzia redefinicji referencji w przypadku ich usunięcia lub uszkodzenia.

Fazy i zaokrąglenia

Te cechy, jako mało ważne i podatne na uszkodzenia, należy wprowadzać na samym końcu. Zwykle stosuję następującą kolejność:
  1. Bryły obrotowe, wyciągnięcia/występy.
  2. Wycięcia, usuwanie materiału.
  3. Pochylenia (np. odlewnicze) ścianek - niedostępne aktualnie w FreeCAD-zie.
  4. Fazy.
  5. Zaokrąglenia.

Oprócz GUI

Czasami warto wyjść poza to co oferuje sam graficzny interfejs użytkownika. Interpreter Pythona we FreeCAD-zie czy moduł Pro/Program w Pro/E pozwalają na budowanie skomplikowanych zależności, korzystanie z instrukcji warunkowych itp.

W przypadku części mających wiele wersji przydaje się tabela cech i wymiarów nazwana w Pro/E Family Table. Dzięki niej można by stworzyć cały typoszereg naszych kołnierzy.  FreeCAD nie ma wbudowanej takiej funkcji, ale używając Pythona i łącząc program np. z Libre Office Calc z wykorzystaniem PyUNO, da się uzyskać podobny efekt.

To dopiero wstęp

Poruszyłem tylko kilka podstawowych kwestii, które można sprawdzić używając FreeCAD-a. Gdyby jednak rozwinąć temat wykorzystując któryś z komercyjnych programów, tekst ten musiałby być znacznie dłuższy.

Siła wspominanego tutaj PTC Pro/E tkwi w możliwości tworzenia bardzo rozległych zależności. Nie bez powodu utworzony w 1985 PTC to akronim od Parametric Technology Corporation. Pro/ENGINEER przez lata był wzorcem nowoczesnego, parametrycznego programu CAD. Cechuje go pewien puryzm - nie ma zbędnych kreatorów, narzędzi czy bibliotek części. Twórcy dają tylko możliwość dostosowania programu pod siebie. Gdzieś między PTC a konstruktorem jest miejsce dla programisty, którzy stworzy kreatory i narzędzia specjalnie pod konkretną firmę.

Mówiąc o rozległych zależnościach miałem też na myśli możliwość modelowania od ogółu do szczegółu.  Można zacząć modelować część już w złożeniu, korzystając z obecnych tam referencji - np. robiąc otwór kołnierza zależny od średnicy i długości czopu wału.

Modelowanie bezpośrednie

Modelowanie bezpośrednie (ang. direct modelling) to ostatni krzyk mody. Pozwala na edycję modeli bez przejmowania się drzewem cech, a nawet modeli bez tego drzewa. Ładnie to wygląda na prezentacjach, ale czy jest niezawodne i precyzyjne? Czy odzwierciedla tok rozumowania konstruktora? Śmiem wątpić.

 Dziękuję wszystkim trzem osobom, które dotrwały do tego miejsca!
Ciąg dalszy może kiedyś nastąpi...

środa, 21 listopada 2012

Jesienna wyprzedaż na Steamie - w tym gry na Linuksa

Dziś ruszyła  jesienna wyprzedaż na platformie Steam. Wśród przecenionych tytułów znajdują się również gry objęte Steam Play i dostępne na Linuksa.
Wybrane przecenione gry:
Każda* z tych gier objęta jest Steam Play i raz zakupiona powinna działać pod Windows, OS X* jak i Linuksem (dla nieobjętych betą potrzebny jest prosty hack).

Wyprzedaż kończy się 27 listopada.

*Red Orchestra nie działa pod OS X.

sobota, 10 listopada 2012

Krótki przepis na Serious Sama w becie Steama [Aktualizacja]

Od wczoraj, Serious Sama 3 BFE może uruchomić pod Linuksem każdy posiadacz tej gry. Nie trzeba być zaproszonym do bety Steama, wystarczy, że już kiedyś się kupiło SS3 i grało np. pod Wine. Oczywiście można też dokonać zakupu przez klienta linuksowego:)


Oto krótka lista czynności do wykonania (nie odpowiadam za ewentualne zablokowanie konta Steam, serio!):
  1. Ściągamy klienta Steam media.steampowered.com/client/installer/steam.deb
  2. Instalujemy klienta i dajemy mu się zaaktualizować, po czym podajemy  mu swój login i hasło.
  3. Steam wyrzuca komunikat, że nie jesteśmy w becie. Zamykamy klienta i uruchamiamy go ponownie wpisując w terminalu: steam steam://open/games
  4. Teraz można już zainstalować Serious Sama. Jeśli jednak graliśmy kiedyś przez Wine/Windows nie musimy ściągać całych 5,5 GiB. W takim przypadku kopiujemy określone pliki i katalogi z Steam/steamapps do linuksowego ~/Steam/SteamApps: common/Serious Sam 3 oraz appmanifest_41070.acf
  5.  Linuksowy klient dociągnie tylko 15 MiB plików wykonywalnych. 
  6. Aktualizacja: istnieje też możliwość uruchomienia gry bez otwierania okna Steam. Należy wpisać w terminalu:  steam -applaunch 4107
  7. Aktualizacja 2: Aby uzyskać napisy w języku polskim, w katalogu ~/Steam/SteamApps/common/Serious Sam 3/Content/SeriousSam3/Config tworzymy plik user.cfg i wpisujemy w nim: strSetCurrentLocale("plk");
  8. Aktualizacja 3 (ważna): wyszła aktualizacja SS3 nazwana "publiczną betą". Przynosi ona wiele poprawek, w tym obejście problemów z zmianą taktowania procesora (CnQ/PowerNow!), które może dać nawet 2-3 krotny wzrost liczby klatek na sekundę (!). Więcej w wątku na forum Steama.



Serious Sam BFE korzysta z Serious Engine 3.5 mającego całkowicie "natywny" port dla Linuksa.

Tak wygląda kawałek mojego logu:  
        -------- START OF LOG --------

15:52:36 LOG:  Core version: $Version: distro_Sam3_PC; SeriousSam3_Executables-Linux-Final; 171822 2012-10-30 12:00:16 @builderl02; Linux-Static-Final-Default$
15:52:36 LOG:  Command:  $
15:52:36 LOG:  Initializing timer.
15:52:36 LOG:  Timestamp: 2012/11/10 15:52:36
15:52:36 LOG:  Binary name: Sam3
15:52:36 LOG:  Binary soft path: Bin/
15:52:36 LOG:  Binary hard path: /home/adi/Steam/SteamApps/common/Serious Sam 3/Bin/
15:52:36 LOG:  Application directory: /home/adi/Steam/SteamApps/common/Serious Sam 3/
15:52:36 LOG:  * OS...
15:52:36 LOG:  Type: Linux
15:52:36 LOG:  Kernel: 3.2.0-33-generic
15:52:36 LOG:  Version: #52-Ubuntu SMP Thu Oct 18 16:19:45 UTC 2012
15:52:36 LOG:  Architecture: i686
15:52:36 LOG:
15:52:36 LOG:  * CPU...
15:52:36 LOG:  Vendor: AuthenticAMD
15:52:36 LOG:  Type: 0, Family: 15, Model: 6, Stepping: 2
15:52:36 LOG:  Clock: 2.80 GHz
15:52:36 LOG:  Cores: 2
15:52:36 LOG:  CMOV: Yes
15:52:36 LOG:  SSE: Yes
15:52:36 LOG:
15:52:36 LOG:  * Memory...
15:52:36 LOG:  Total physical memory: 512 MB
15:52:36 LOG:  Free physical memory: 0 MB
15:52:36 LOG:
15:52:36 WRN:  Memory block injectors occupy additional 4 bytes per memory block.
15:52:36 LOG:  Loaded "/home/adi/Steam/SteamApps/common/Serious Sam 3/Bin/ScriptLua.so".
15:52:36 LOG:  Loaded "/home/adi/Steam/SteamApps/common/Serious Sam 3/Bin/GameEnv_Steam.so".
15:52:36 INF:  GameEnv API: Steam
15:52:36 INF:  Encoded user ID = 2c48e036:11f41b66
15:52:36 LOG:  Loading cvars from "$/home/adi/Steam/userdata/103922061/41070/local/SeriousSam3.ini".
15:52:36 TRC:  Cannot assign value to cvar dbg_strMarkedDataTypes. The variable is not declared.
15:52:36 LOG:  Skipped assigning to prf_strShowFPSTicker because the saved version (0) is different than the current version (2).
15:52:37 LOG:  Trying to set display mode 1280x720(window)...
15:52:37 LOG:  Loaded "/home/adi/Steam/SteamApps/common/Serious Sam 3/Bin/GfxOGL.so".
15:52:37 LOG:  Loaded "libpci.so.3".
15:52:40 INF:
15:52:40 INF:  Gfx API: OpenGL
15:52:40 INF:  Window: 1280 x 720
15:52:40 INF:  Vendor: ATI (0x1002)
15:52:40 INF:  Driver: ATI Technologies Inc. (0x6758)
15:52:40 INF:  Renderer: AMD Radeon HD 6670
15:52:40 INF:  Version: 4.2.11762 Compatibility Profile Context
15:52:40 INF:  Video memory size: 1024 MB
15:52:40 INF:  Available for textures: 812 MB
15:52:40 INF:  Active GPU(s): 1
15:52:40 LOG:  Loaded "/home/adi/Steam/SteamApps/common/Serious Sam 3/Bin/SfxOAL.so".
15:52:40 LOG:  Loaded "libopenal.so.1".
15:52:40 TRC:  EAX is not supported.
15:52:40 INF:
15:52:40 INF:  Sfx API: OpenAL
15:52:40 INF:  Device: PulseAudio Default
15:52:40 INF:  Mixer frequency: 44100 Hz
15:52:40 INF:  Mixer voices: 64
15:52:40 INF:  Max sound sources: 25
15:52:40 INF:  Max total volume: 3
15:52:40 INF:  Speaker config: (unknown)
15:52:40 INF:  Environment FX: not supported


Na Catalystach 12.11 beta płynność można uznać za grywalną (25-40 kl/.s przy średnich detalach, okazyjne spadki do niższych wartości). Czasami pojawiają się artefakty. Przy otwartym R600g nie ma artefaktów, ale prędkość renderingu jest gdzieś między 2 a 5kl./s, co wyklucza to rozwiązanie.


 Fragment (cudzej) rozgrywki


 Deser

Polecam kawałek prezentacji Serious Engine 3 przy okazji Serious Sama HD. Prezentacja odbyła się w 2010 i była (chyba) prowadzona w języku chorwackim. Najciekawsza część od 19:00:

Davor Hunski, Alen Ladavac (Croteam) - Serious Sam HD - Behind the scenes from IT showoff on Vimeo.

Aktualizacja: Pograłem trochę dłużej i raportuję brak artefaktów (błędów wyświetlania grafiki) w czasie gry. Pojawiają się one tylko w intrze. Nie pojawiają się w ogóle (nie znam przyczyny tej poprawy). Nie ma też żadnych problemów ze stabilnością. Niestety gra lubi "chrupnąć" gdy na ekranie pojawiają się nowe obiekty. 
Wątek na Steamie dot. uruchamiania SS3: BFE pod Linuksem.

Aktualizacja 2: Serious Sam 3 w wersji na Linuksa ma 60 (sześćdziesiąt) opcji dotyczących wydajności. Jest czym się bawić.





wtorek, 6 listopada 2012

Steam dla Linuksa właśnie wystartował

O 20:30 Valve poinformowało o starcie bety Steama dla Linuksa. W skrócie:

niedziela, 14 października 2012

Historia silnika HPL

Pierwsza wersja silnika HPL, "napędzająca" Penumbrę Overture, jest od dwóch lat dostępna na licencji GPL. Uwolnienie silnika było wynikiem nadzwyczajnego sukcesu wyprzedaży Humble Indie Bundle. HPL wykorzystuje OpenGL (grafika) i OpenAL (dźwięk) i jest jak najbardziej wieloplatformowy.

Historia silnika sięga aż roku 1994, gdy pracował on tylko w dwóch wymiarach. Nowożytne dzieje to rok 2005 i pierwsze dema technologiczne Penumbry. Poniżej widoczne jest już dość zaawansowane demo z lutego 2006 roku:

 

(Uwaga: nie znam się na silnikach i grafice, stąd w tekście wiele odnośników przydatnych do samodzielnej edukacji)
Kluczową rolę gra tu interakcja ze środowiskiem i tzw. "fizyka". Zastosowanie biblioteki Newton Game Dynamics pozwoliło odwzorować prawa fizyki w niespotykanym wcześniej stopniu [1]. Do tego zmieniło się manipulowanie obiektami. Zamiast prostego klikania na drzwi by je otworzyć, tu trzeba złapać za nie (widoczna dłoń) i pociągnąć, przez co możliwe jest nie tylko otwarcie, ale i uchylenie. To właśnie realistyczne sterowanie było kluczowym elementem rozgrywki i czymś co przyciągnęło do Penumbry wielu graczy nielubiących gier Point&Click (m. in. mnie).

Druga rzucająca się w oczy w tym demie rzecz to oświetlenie liczone całkowicie w czasie rzeczywistym. HPL1 używa, znanych z Dooma 3 shadow stencils (szablony cieni?). Z kolei usuwanie niewidocznych obiektów wykonywane jest metodą portalową.

Całość: grę, silnik i narzędzia deweloperskie stworzyło studio Frictional Games liczące wtedy zaledwie 5 osób. Niesamowite![2]  

Ciekawostką jest geneza nazwy silnika. HPL to Howard Phillips Lovecraft, którego dziełami była luźno inspirowana Penumbra i Amnesia.

Źródłowe informacje o HPL1:

Teraźniejszość i przyszłość

Nowsze gry: Amnesia: The Dark Descent, Amnesia: Justine i zaplanowana na przyszły rok Amnesia: A Machine For Pigs wykorzystują (nadal zamknięty) silnik HPL2. Przyniósł on wiele zmian w renderingu, narzędziach, ułatwił tworzenie modów. Nie zmieniła się za to znacząco mechanika rozgrywki.  Więcej szczegółów można przeczytać na wiki Amnesii (link powyżej).



Na rok 2014 planowane jest wydanie nowej gry wykorzystującej silnik HPL3. Trzecia generacja ma lepiej radzić sobie z otwartymi przestrzeniami (m.in. dynamiczny poziom detali dla terenu) i przynieść dodatkowe efekty, jak te opisywane w poście na blogu Frictional. Na marginesie: nowa gra ma być znacznie "głębsza", twórcy nie są wystarczająco zadowoleni ze sposobu w jaki Amnesia straszy[3]. Przemyślenia jednego z członków zespołu na temat tworzenia gier można znaleźć w tym dokumencie.
  1. Ok, powiedzmy, że Havok w Source w 2003/4 prezentował podobny poziom.  
  2. Stąd trudno dziwić się pewnym niedoróbkom artystycznym w Penumbrze. Żyjemy w czasach, gdy zespoły tworzące gierki 2D na Androida są większe, a gry na PC to już kwestia setek ludzi. Ostatecznie można porównać ekipę Frictional z Croteam (6 pracowników+4 współpracowników), którzy w 2001 również stworzyli samodzielnie silnik 3D, grę i narzędzia.
  3. Chyba są zbytnio samokrytyczni;)

niedziela, 7 października 2012

FreeCAD [How-to] - dwa słowa o książce

Odebrałem niedawno papierową wersję książki FreeCAD [How-to] Solid Modeling with the power of Python. Jest to krótki poradnik do programu FreeCAD.


Jak wielokrotnie już pisałem, FreeCAD nie jest ukończony i nie może konkurować z komercyjnym, kompletnym oprogramowaniem. Stąd poradnik może się zajmować tylko elementami programu dostępnymi na dzień dzisiejszy. Spis treści można znaleźć tutaj
Oczywiście większość informacji zawartych w książce znajduje się w dokumentacji online programu. Różnica to sposób ich podania, zbiór krótkich receptur/ćwiczeń, który można trzymać pod ręką, może być znacznie wygodniejszy. Szczególnie, że są one napisane w przystępny sposób.

Czy warto? Nie wiem. Muszę przyznać, że książka jest jak na nasze warunki dość droga, szczególnie biorąc pod uwagę jej rozmiar (70 stron, z czego jakieś 50 to receptury). Na dzień dzisiejszy ani sam program ani książka nie będą w stanie pokryć wszystkich wymagań typowego projektanta lub konstruktora.



Starałem się napisać moje "dwa słowa" w sposób obiektywny, co mogło być trudne biorąc pod uwagę, że brałem udział w przeglądzie FreeCAD [How-to] Solid Modeling with the power of Python. 


wtorek, 25 września 2012

FreeCAD: nowe funkcje w warsztacie Part Design

Najnowsza wersja programu FreeCAD wprowadza szereg nowych funkcji w warsztacie Part Design. Ma on dostarczać wysokopoziomowe, wykorzystujące cechy, narzędzia do modelowania brył.

Zaktualizowany  pasek narzędzi Part Design, zaczynając od lewej strony (w nawiasie nazwy używane przez program):
  • Utwórz szkic (Sketch)
  • Zakończ tworzenie szkicu
  • Występ (Pad)
  • Kieszeń (Pocket)
  • Obrót (Revolution)
  • Rowek (Groove)
  • Zaokrąglenie (Fillet)
  • Faza (Chamfer)
  • Lustro (Mirror)
  • Powielenie liniowe (Linear pattern)
  • Powielenie biegunowe (Polar pattern)
  • Multitransformacja (Multitransform) - może być kombinacją luster i powieleń

Nowe funkcje - przykład podstawowego użycia

Utwórz prostokąt (szkicując w Part Design) na płaszczyźnie XY. Powinien on być symetryczny do osi X i Y. Najprościej można zrobić to zaznaczając dwa narożniki i oś, a następnie wybierając więz symetrii.

 
Utwórz występ (pad) szkicu. Zauważ obecność nowych opcji: type (Dimension, To last, To first, Up to face, Two dimensions), symmetrical (tak/nie),  reversed (tak/nie). Uwaga: na dzień dzisiejszy część z nich może nie działać jeszcze prawidłowo (trwa implementacja).



Zaznacz boczną powierzchnię występu i naszkicuj prostokąt. Będzie on wykorzystany do utworzenia cechy "rowek" (groove). Rowek jest podobny do kieszeni (pocket), ale materiał usuwany jest tu nie w linii prostej a  wokół osi obrotu.


Zaznacz szkic i kliknij Groove a selected sketch. Ustaw kąt i stronę w karcie Tasks. Notka: szkice dla niemal wszystkich cech (poza występami) potrzebują powierzchni wpierającej. Powinna zostać ona wybrana przed rozpoczęciem szkicowania. W przeciwnym razie użyj Map sketch to face z menu Part Design.


W następnych krokach zostanie utworzona cecha typu lustro. Wybierz górną powierzchnie i naszkicuj okrąg.


Utwórz kieszeń (pocket) wykorzystując okrąg. Ustaw typ na Przez wszystko (Through all).


Wybierz kieszeń i kliknij Create a mirrored feature. Ustaw płaszczyznę XZ. Notka: lustro wielu otworów typu "Przez wszystko" może nie być możliwe w obecnej wersji programu. W takim przypadku głębokość otworu musi być ograniczona wymiarem (type: Dimension).
 

Powielenie liniowe (Linear pattern) jest kolejnym użytecznym narzędziem. Utwórz występ (pad) na bocznej ścianie, równoległej do płaszczyzny XZ.


Zaznacz występ i użyj Create a linear pattern feature. Ustaw kierunek (direction) na X, określ długość powielenia (powinna być mniejsza niż długość całej bryły) i liczbę elementów.


Najbardziej zaawansowanym narzędziem jest multitransformacja (multitransform feature). Możesz w niej łączyć liniowe i biegunowe powielenia oraz lustra.
Wybierz górną ścianę bryły.


Narysuj okrąg w pobliżu punktu (0,0). Zostanie on wykorzystany do powielenia liniowego. To powielenie będzie bazą dla powielenia biegunowego, a ono stanie się bazą dla lustra.


Utwórz występ (pad) z okręgu.


Użyj Create a multitransform feature. Kliknij prawym przyciskiem myszy w polu tekstowym Transformations  i następnie wybierz Add linear pattern.


Ustaw liczbę elementów (occurrences) na 2 i kierunek na X.


Teraz możesz dodać, w podobny sposób, powielenie biegunowe używając Add polar pattern. Kierunek to Z a liczba to np. 5.



Jeśli chcę zrobić lustro ostatniej cechy przez płaszczyznę XY to główna bryła powinna być symetryczna w stosunku do XY. W tym celu zedytujmy pierwszy występ (pad). Typ (Type) powinien zostać ustawiony na Symmetric to plane.



Teraz można dokończyć multitransformację. Użyj prawego przycisku by dodać lustro wybierając Add mirrored transformation. Ustaw płaszczyznę lustra na XY.


Efekt końcowy powinien przypominać bryłę widoczną poniżej:



Pobierz plik.

Pobierz surowe wideo.


FreeCAD w wersji:
Version: 0.13.1486 (Git)
Branch: master
Hash: aaaa7eb30313e25614b7f1b95b544788d8fa99fc



Lustro w warsztacie Part kontra lustro w warsztacie Part Design


Niektóre narzędzia (Mirror, Chamfer, Fillet) zdają się być zdublowane w warsztatach Part i Part Design. Pomimo zbieżności nazw, działają one w nieco inny sposób. Warsztat Part przeznaczony jest do niskopoziomowych operacji na bryłach a Part Design do wysokopoziomowych na cechach. Nie brzmi to klarownie, ale spróbujmy porównać to na przykładzie narzędzia lustra (Mirror).

Lustro w warsztacie Part

Utwórz nowy szkic (sketch) na płaszczyźnie XY i narysuj kwadrat lub prostokąt. Powinien być on symetryczny do osi. Następnie utwórz występ (pad). 


Utwórz kieszeń (pocket) na bocznej ścianie bryły (jak na zrzucie poniżej).


Otwórz warsztat Part i użyj narzędzia lustra (Mirroring a selected shape) wybierając dodatkowo płaszczyznę (YZ lub XZ) w karcie Tasks.


Potwierdź operację, powinieneś zobaczyć drugą bryłę (odbicie lustrzane) możesz ukryć bryłę Pocket lub Pocket (Mirror #1) używając [Spacja]. 

Lustro w warsztacie Part Design

Usuń lub ukryj Pocket (Mirror #1) i wróc do warsztatu Part Design. Wybierz Pocket i użyj narzędzia lustra (Create a mirrored feature). Płaszczyzna powinna być określona na YZ (lub XZ). Jak widać lustro w Part Design działa inaczej. Zamiast całej bryły odbiciu podlega tylko cecha typu kieszeń (pocket).


Właśnie w tym kierunku będzie dążył program - wysokopoziomowych operacji na cechach. Funkcje dostępne w tej chwili są tylko wierzchołkiem góry lodowej...

Pierwsza książeczka o programie FreeCAD

FreeCAD: Solid Modeling with the Power of Python

Napiszę więcej, gdy tylko dorwę egzemplarz ;-)