Jdi na navigaci předmětu

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

Varování:

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

Vaším úkolem je vytvořit parametrický model krabičky. Krabička má podstavu tvaru obdélníku se zaoblenými rohy. Obsahuje spodní část a víčko.

Půdorys

pudoris

Použité argumenty: x a y jsou vnitřní rozměry, rad je poloměr zaoblení rohu (také vnitřní). V případě hodnot x nebo y ⇐ 0 se krabička nevykreslí. V případě hodnoty rad ⇐ 0 je vnitřní roh pravoúhlý. V případě, že se do rohů kružnice s poloměrem rad nevejde, zmenší se poloměr na mezní hodnotu.

wall_thick

roh
roh bad
roh bad2

Pro rad ⇐ 0:

roh90
roh90 bad

Použité argumenty: wall_thick je tloušťka stěny. Musí být všude stejná, včetně rohu. Pro hodnoty ⇐ 0 se krabička nevykreslí.

Bokorys

bokorys vrsek
bokorys spodek

Použité argumenty: z1 a z2 jsou výšky jednotlivých částí včetně podstav. wall_thick je stejný jako u půdorysu, jen se v rohu chová jinak, viz obrázek. Pro hodnoty z1 nebo z2wall_thick (respektive wall_thick + lock_z pro z1, viz níže) se krabička vykreslí pouze na výšku dna/stropu a spojovacího mechanismu.

Detail spojení

lock

Použité argumenty: wall_thick je stejný jako výše. lock_z je výše zubu, pozor na různý vztah k z1 a z2. reserve je rozměr mezery mezi jednotlivými díly krabičky. Pro hodnoty < 0 se reserve a lock_z nastaví na 0. Pokud je reserve větší než wall_thick, zuby mechanismu se nevykreslí. * není argument, ale vyznačuje, že oba vyznačené rozměry jsou stejné (a to po celém obvodu krabičky/délce spoje).

Interafce

module box(x=30, y=30, z1=10, z2=5, rad=15, wall_thick=2, lock_z=2, reserve=1.5, to_print=true, print_space=5)

Dříve nedefinované argumenty ovlivňují rozmístění krabičky v prostoru.

Pokud je to_print vypnutý (false), krabička musí stát na XY rovině (spodek krabičky v z=0), vycentrovaná tak, aby osa Z procházela jejím středem. Víčko se vykreslí na krabičce, tak aby reflektovalo argument reserve. Hodnota print_space se ignoruje. Zachovejte směr rozměrů x a y podle prvního obrázku nahoře (logicky podle pojmenování).

Pokud je to_print zapnutý (true), vykreslí se oba díly na ploché straně (víčko vzhůru nohama) na XY rovině (spodek i vršek krabičky v z=0) vedle sebe vycentrované na ose X, vzdálené od sebe o hodnotu print_space, která se počítá od venkovní stěny k venkovní stěně, se středem mezery v počátku souřadném. Zachovejte směr rozměrů x a y podle prvního obrázku nahoře (logicky podle pojmenování). Update: Spodní část krabičky má být posunuta kladným směrem po ose X, víčko záporným.

Vykreslení na správné místo je pro hodnocení úlohy naprosto zásadní, kvůli poloautomatickým testům.

Modul musí jít použít z externího souboru pomocí direktivy use - nesmí tedy uchovávat žádné konstanty mimo modul.

Update: Zachovejte výchozí hodnoty argumentů tak, jak jsou zadané!

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 box.scad, uložte do archivu box.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/box.zip Na soubor do namespacu umístěte odkaz. V archivu kromě souboru box.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 krabičky.

Termín odevzdání je 9.11.2014 včetně. Pozdní odevzdání je možné do 23.11.2014 včetně a to za polovinu bodů, které by jinak student obdržel, kdyby odevzdal včas. 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. Pokud chcete úlohu odevzdávat až v pozdějším termínu, ujistěte se, že na přelomu 9. a 10.11. na Eduxu není žádná rozpracovaná verze (je třeba smazat soubor, nejen odkaz).

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.

Otázky od studentů

Jak se má krabička chovat, pokud rad > x/2 nebo y/2?

Viz text „V případě, že se do rohů kružnice s poloměrem rad nevejde, zmenší se poloměr na mezní hodnotu“ v zadání.

"Pokud je reserve větší než wall_thick, zuby mechanismu se nevykreslí." Znamená to, že se zuby nevykreslí, ale vzdálenost krabiček zůstane reserve + lock_z, nebo se má krabička chovat jako kdyby lock_z == 0?

Znamená to to první, vzdálenost zůstane reserve + lock_z.

„oba díly vycentrované na ose X“ Chápu správně, že oba díly mají ležet na ose X a osa Y bude procházet mezerou mezi nimi, tudíž budou díly sousedit stranami o délce y?

​Ano.

Jak se má krabička chovat, pokud print_space < 0?

Má se kreslit „přes sebe“, v případě velkého záporného print_space se krabičky prohodí (do zadání jsme doplnili na které straně má být jaká část). Vstup tedy de facto není třeba ošetřovat, pokud se posun nebude dělat nějakým absurdním způsobem.

Je třeba ošetřovat, pokud je lock_z větší než z1?

Viz text „Pro hodnoty z1 nebo z2wall_thick (respektive wall_thick + lock_z pro z1, viz níže) se krabička vykreslí pouze na výšku dna/stropu a spojovacího mechanismu.“

Vypadá řez krabičkou asi takhle?

box

​Ano. Pro vhodně zvolené parametry.

**Potřeboval bych upřesnit větu ze zadání:

"Pro hodnoty z1 nebo z2 wall_thick (respektive wall_thick + lock_z pro z1, viz níže) se krabička vykreslí pouze na výšku dna/stropu a spojovacího mechanismu."

Jak je myšlena výška dna/stropu?

Myslí se tím, že u vrchní části bude tloušťka stropu z2 + se vykreslí zámek?

A u spodní části bude tloušťka dna z1-lock_z? Tudíž v extrémním případě se vykreslí pouze zámek?**

Ne, naopak. Tloušťka dna i stropu bude vždy wall_thick. Zámek se vykreslí. Pokud se tam zámek nevleze, tak se musí výška krabičky upravit, aby se to tam vlezlo.

Jak je myšlena věta v zadání pod obrázkem s mechanismem zámku "Pro hodnoty < 0 se reserve a lock_z nastaví na 0."? Bere se to pro reserve < 0 nebo lock_z < 0 se obě mají nastavit na 0? A nebo jenom hodnota, která je < 0 má být = 0?

Jenom ta proměnná, která je záporná, se má nastavit na 0. Nezávisle na té druhé.

„Pro hodnoty z1 nebo z2 ⇐ wall_thick (respektive wall_thick + lock_z pro z1, viz níže) se krabička vykreslí pouze na výšku dna/stropu a spojovacího mechanismu.“ Znamená to, že pokud ⇐ wall_thick, tak upravím výšku dna a udělám dno+zuby a z2 nechám původní (pokud je větší než wall_thick) nebo pokud je nesplněna alespoň jedna část, tak se automaticky krabička upraví pro obě hodnoty?

Výška dna a ni stropu se nikdy neupravuje. Upravuje (normalizuje) se pouze hodnota z1 a z2, nezávisle na té druhé.

Když je rad > x/2 nebo y/2, tak se má rad nastavit na mezní hodnotu, tj. 0?

Ne, mezní hodnotou je myšlena maximální možná.

Když je rad == x/2 nebo y/2, má se vykreslit kolečko?

Když je rad roven x/2 a zároveň y/2, má krabička profil kolečka.