OpenSCAD: Domácí úkol ZS 2015/2016
Minulé domácí úlohy najdete v archívu.
Varování:
Toto je alfa verze zadání úkolu. Dokud zde uvidíte tuto noticku, zadání se může rapidně měnit.
Stojan na karty
Protože máte několik důležitých karet (např. platebních nebo ISIC apod.), které nenosíte v peněžence, ale válí se vám na stole, rozhodli jste se vymodelovat na ně pořadník/stojánek. Stojánek karty umožňuje řadit za sebe a pro každou má vlastní přihrádku. Aby se karty dobře prohlížely, každá z přihrádky o nějaký kus kouká a každá zadnější přihrádka je o kousek vyvýšená (podobně jako sedadla v kině).
Pro jednoduchost budeme předpokládat, že karty mají tvar obdélníku (respektive kvádru), bez jakýkoli zaoblených hran a výstupků (např embosování). Všechny karty mají stejný rozměr. Zde je několik ilustrací řezů tímto stojánkem (boční, podélný a příčný; obrázky jdou kliknutím zvětšit).
Zeleně je naznačena jedna karta vložená ve stojanu. Červeně a modře pak určité rozměry, které budou popsány dále. Všimněte si, že při pohledu z boku a zepředu nedochází k žádnému zaoblení. Zato při pohledu zhora je vidět, jak se prostor pro kartu „obtáčí“ kolem karty tak, aby byla mezera mezi kartou a stěnou všude stejná (i v rohu).
Interface a argumenty
Váš model musí fungovat jako samostatný module
pro OpenSCAD, použitelný pomocí direktivy use
(nemsí obsahovat žádné konstanty mimo modul, ale je možné (a žádoucí) vytvořit si pomocné moduly). Musíte použít tento interface (včetně stejných výchozích hodnot!):
module cardholder(size=[85, 54, 1], thickeness=3, spacing=1, cards=4, delta=25, visibility=0.3) { /* kód */ }
size
je vektor tří hodnot – rozměrů karty v milimetrech – v pořadí výška, šířka, tloušťkathickeness
je základní tloušťka stěny, na obrázcích výše naznačena červenou barvouspacing
je prostor mezi kartou a stěnou, na obrázcích výše naznačen modrou barvoucards
je celkový počet karet (slotů) ve stojánkudelta
je posun každého „zadnějšího“ slotu směrem nahoruvisibility
je percentuální (jako desetinné číslo) část karty, která bude vidět při pohledu zepředu
Může se stát, že na vstupu dostanete divné údaje, v tom případě se zachovejte následovně. Můžete předpokládat, že všechny hodnoty budou číselné (případně vektor čísel u size
).
- Pokud
size
není vektor s alespoň dvěma složkami, nic se nevykreslí. - Pokud má
size
pouze dvě složky, případně pokud je třetí složka 0, předpokládejte kartu s nulovou tloušťkou, což je v pořádku. - Pokud je první nebo druhá složka vektoru
size
⇐ 0, nevykreslí se nic. - Pokud je
cards
⇐0, nevykreslí se nic. - Pokud je
thickeness
⇐0, předpokládejte hodnotu 0. - Pokud je
spacing
⇐0, předpokládejte hodnotu 0. - Pokud je
delta
0, k žádnému posunu nedojde, pokud je záporné, posune se každá „zadnější“ karta níže (celý objekt se de facto převrátí zády dopředu). - Pokud je
visibility
mimo interval (0, 1), předpokládejte krajní hodnotu (0 pro < 0, 1 pro > 1).
Umístění v prostoru
Objekt bude stát na XY plošině (bude mít spodní hranu zarovnanou s Z = 0). Vycentrovaný vlevo a vpravo podle osy Z. Předek stojanu bude směřovat k negativní ose Y. Umístění je zásadní pro naše poloautomatické testy.
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 zakázána.
Odevzdávání a hodnocení
Soubor pojmenujte cardholder.scad, uložte do archivu cardholder.zip (přímo do kořenového adresáře archivu) a nahrajte přímo do svého osobního namespacu na Eduxu. Musí jít stáhnout z odkazu https://edux.fit.cvut.cz/courses/BI-3DT/_media/student/username/cardholder.zip
Na soubor do namespacu umístěte odkaz. V archivu kromě souboru cardholder.scad musí být pouze potřebné soubory (další vaše scad soubory s moduly, případné DXF nebo STL soubory k importování), do archivu nepatří vygenerované STL soubory stojánku. Správné pojmenování je důležité pro naše automatické testy. Nesprávně pojmenovaný soubor se nepovažuje za odevzdaný.
Termín odevzdání je 30.11.2015 včetně. Pozdní odevzdání není možné. V případě doložené dlouhodobé vážné nemoci je možné domluvit se na speciálním termínu. Nemoc či nehoda těsně před odevzdáním neomlouvá.
Po ohodnocení (které proběhne až po termínu odevzdání) nelze úlohu opravit. Před termínem odevzdání je ji však možno konzultovat i nahrávat na Edux v rozpracovaném stavu.
Při hodnocení se bude poloautomaticky testovat sada připravených argumentů obsahující především krajní případy. Doporučujeme proto modul vyzkoušet pro všemožné vstupy (nečíselné vstupy testovány nebudou). Na základě výsledku z testu a kvality kódu student může získat 0 až 20 bodů. V případě, že vyhodnotíme, že student úlohu opsal, případně vlastnímu kódu vůbec nerozumí, a ten neprokáže opak, bude úloha hodnocena -100 body, což znamená klasifikaci známkou F (toto se již stalo).
Počet (ne)úspěšných testů přímo ovlivňuje hodnocení. Testy budou po ohodnocení úloh zveřejněny. Skladba testů odpovídá obtížnosti a závažnosti jednotlivých částí úkolu, není tedy možné chtít kompenzaci za to, že jedna chyba ovlivnila výsledek více testů. Před termínem je možné nechat si cvičícím vaše řešení testy projet - cvičící vás například upozorní na to, že nějaká chyba rozbila většinu z nich, ale nemůže vám testy ukázat (tvořit úlohu přímo na míru testům by bylo příliš jednoduché).
Otázky od studentů
Zatím žádné dotazy nepadly. Neváhejte se zeptat svých cvičících.