Jdi na navigaci předmětu

OpenSCAD: Domácí úkol ZS 2015/2016

Varování:

Toto není aktuální zadání úkolu. Je zde pouze k účelům archivace.

Důležité:

V zadání se dříve objevovala hodnota thickeness. Bylo to samozřejmě špatně a měli jsme na mysli thickness.

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).

bok4 vrch2 predek

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).

Doplněno pro upřesnění: Stejně jako má nejpřednější držák karty zaoblené přední rohy, mají zaoblené rohy i další držáky, ale pouze v místě, kde převyšují držák před sebou. Viz obrázek.

vrch oblouky

Doplněno pro upřesnění: Poslední karta (najzadnější) nemá zadní stěnu vyvýšenou (viz obrázek).

Interface a argumenty

Důležité:

V zadání se dříve objevovala hodnota thickeness. Bylo to samozřejmě špatně a měli jsme na mysli thickness.

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], thickness=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šťka
  • thickness je základní tloušťka stěny, na obrázcích výše naznačena červenou barvou
  • spacing je prostor mezi kartou a stěnou, na obrázcích výše naznačen modrou barvou
  • cards je celkový počet karet (slotů) ve stojánku
  • delta je posun každého „zadnějšího“ slotu směrem nahoru
  • visibility 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 thickness ⇐0, předpokládejte hodnotu 0 (toto nebudeme testovat).
  • 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/vpravo a dozadu/dopředu podle osy Z. Předek stojanu bude směřovat k negativní ose Y. Umístění je zásadní pro naše poloautomatické testy.

umisteni

Ilustrační obrázek ukazuje umístění. Zvýrazněná stěna je předek.

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 deadlinem proběhne několik kol odevzdání na nečisto. Cvičící vaše řešení nechá projet testy a upozorní vás například 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é). Tyto kola proběhnou 6.11., 13.11., 20.11., 23.11. a 27.11. vždy okolo 01:00 v noci. V tento čas musí být úloha odevzdaná na Edux. Zpětnou vazbu můžete očekávat v průběhu dne. Mimo tyto termíny není možné nechat úlohu projet testy.

Otázky od studentů

Mají být zaoblené všechny přihrádky, stejně jako ta první?

Ano, doplněno do zadání.

Neměla by být poslední změna zarovnaná podle poslední přihrádky?

Ano, doplněno do zadání, obrázek upraven.

Je rozdíl mezi dvěma úrovněmi delta, nebo delta + spacing?

​Delta. Spacing nemá na posun karty vliv.

Parametr delta je udáván v % nebo v jednotkách?

V jednotkách.