OpenSCAD: Domácí úkol ZS 2016/2017
Varování:
Toto není aktuální zadání úkolu. Je zde pouze k účelům archivace.
Další domácí úkoly ze semestrů minulých můžete vidět v archívu.
Motivace
Vaším úkolem je navrhnout plně parametricky model elektrické zásuvky / prodlužovačky / rozmnožovačky / jezvčíka / psa (dále jen zásuvky). Jelikož každý designer si chce namodelovat svoji zásuvku a následně vyzkoušet jak vypadá v reálném světe. Zapojit do ní na zkoušku kabely. Přiložit ji k nábytku, jestli mu pasuje (esteticky, rozměrově). Proto máte za úkol navrhnout univerzální modul, který těmto zoufalým designérům pomůže.
(Potřeba designerů po zásuvkách je smyšlená.)
Rozhraní
Zásuvka má tyto parametry
- y vnější rozměr na ose y (více méně, viz dále)
- z vnější rozměr na ose z (nepočítaje případné trčící kolíky)
- radius_of_outlets poloměr vnitřku jedné zásuvky
- number_of_outlets počet zásuvek
- border_of_outlet tloušťka okolo jedné zásuvky
- offset_of_outlets rozestup jednotlivých zásuvek, 0 znamená že se dotýkají
- depth_of_outlets hloubka zásuvek
- pin_radius poloměr kolíků
- pin_depth délka kolíku a hloubka děr
- pin_offset rozestup kolíků od středu
- pin_angle úhel natočení kolíků
- round_r poloměr zaoblení těla zásuvky
Jednotlivé parametry budou podrobněji vysvětleny dále.
Zásuvka má toto rozhraní včetně výchozích hodnot, které musíte zachovat:
module plug(y=40, z=30, radius_of_outlets = 15, number_of_outlets = 3, border_of_outlet = 6, offset_of_outlets = 0, depth_of_outlets = 10, pin_radius = 2, pin_depth = 5, pin_offset = 8, pin_angle = 45, round_r = 2) { // ... }
Váš model musí fungovat jako samostatný module pro OpenSCAD, použitelný pomocí direktivy use (nesmí obsahovat žádné konstanty mimo modul, ale je možné (a žádoucí) vytvořit si pomocné moduly). Musíte použít výše zmíněný interface (včetně stejných výchozích hodnot!).
Vnější tvar
Jednotlivé zásuvky vypadají takto:
Ale levá krajní vypadá jinak:
Celé tělo je 3D zaoblené, ale díry na zásuvky ne.
Konkrétní popis parametrů
Šířka / osa y
- Je dána tak, aby když je tloušťka okolo zásuvky tlustší než šírka, tak se ořízne.
- Pokud je hodnota větší než průměr zásuvky a jejího tloušťky, tak se nic neořezává.
- Pokud je šírka menší než průměr zásuvky tak se nic nevykreslí.
(Nevidíte-li na obrázku osy s popisky, dejte tvrdý refresh stránky, máte v cache starou verzi.)
Výška / osa z
- Pokud je hloubka zásuvky (depth_of_outlets) a délka kolíků (pin_depth) v součtu větší a tudíž by došlo k proděravění zásuvku skrz na skrz, nic se nevykreslí.
- Pokud je záporná, nic se nevykreslí.
- Z udává výšku těla zásuvky, bez případných kolíků, které někdy mohou trčet výše.
Poloměr jedné zásuvky
- Pozor nejedná se o průměr
Počet zásuvek
- Pokud je to záporné číslo nic se nevykreslí
- Pokud je to 0 nic se nevykreslí
- 1 je validní počet zásuvek
Tlouštka okolo jedné zásuvky
- Jedná se o tlouštku stěny okolo zásuvky při pohledu ze shora
- Může byt na ose y uříznuty v případě vhodného nastavení parametru pro osu y
- Pokud je to záporné číslo nebo 0 nic se nevykreslí
Rozestup zásuvek
- Rozestup zásuvek mezi zásuvkou
- Pokud je 0, zásuvky se lehce dotýkají (jakoby v jednom bodě)
- Pokud je záporný, nic se nevykreslí
Hloubka zásuvek
- Hloubka jedné zásuvky
- Pokud je hloubka zásuvky (depth_of_outlets) a délka kolíků (pin_depth) v součtu větší a tudíž by došlo k proděravení zásuvku skrz na skrz nic se nevyskreslí.
- Pokud je to záporné číslo nic se nevykreslí
Poloměr kolíku
- Poloměr jednoho kolíku i děr co jsou v zásuvce
Hloubka děr a délka kolíku
- Je stejná
Rozestup kolíků
- Pokud je rozestup 0, kolík i díry jsou na stejném místě
Úhel kolíku
- Jedná se o natočení kolíků (směr viz obrázek)
Poloměr zaoblení
- jak moc je tělo zásuvky zaoblené (0 - není zaoblené; N - poloměr v rohu je N)
- nesmyslné hodnoty nebudou testovány
- zaoblením se nesmí objekt zvětšit, tzn. dříve uvedené rozměry jsou vnější po zaoblení
Umístění v prostoru
Pro naše poloautomatické testy je třeba objekt správně umístit v prostoru.
Zásuvka leží více-méně na počátku (bod 0). Osa X prochází prostředkem objektu
Osa Y prochází prostředkem zásuvek (ne prostředkem objektu). Pokud máme sudý počet zásuvek:
Pokud máme lichý počet zásuvek:
Celý objekt leží na rovině XY, tzn nezasahuje do záporného Z:
Poznámky
- Rozměr na ose X není schválně zadán, protože zásuvka bude mít délku podle nastavených parametrů.
Kód
Kód musí splňovat určitou kvalitu, jednou z podmínek je logické dodržení odsazení (v celém souboru stejné). Opakované konstrukce musí být implementovány vlastními moduly a forcykly. Magické konstanty musí být samovysvětlující, nebo doplněné o komentář. Není možné použít žádné externí knihovny pro OpenSCAD, ani knihovnu MCAD. Manipulace s $fn
, $fs
a $fa
je přísně zakázána.
Odevzdání
Odevzdává se dle instrukcí na GitHubu
Deadline je 7.12.2016 včetně.