Petri Eskelinen, Lasse Laukkanen, Kaisa Kokko ja Mikko Ketola

EXODUS

                                                   Sovellussuunnitelma

Tietotekniikan cum laude -työprojekti

24.10.2001

 


Tekijä: Petri Eskelinen, Lasse Laukkanen, Kaisa Kokko ja Mikko Ketola           

Yhteystiedot: Agc233.3, http://kotka.it.jyu.fi/exodus, puh: 014-2604966

Työn nimi: EXODUS

Title in English: EXODUS

Työ: Cum laude -työprojekti

Sivumäärä: 37

Teettäjä: Numerola Oy

Avainsanat: Blokki, kontrollipiste, tahko, särmä

Tiivistelmä: Projektin tarkoituksena on toteuttaa Numerola Oy:lle ohjelma, jonka avulla voidaan luoda kolmiulotteisia laskenta-alueita. Alueet muodostuvat perusblokeista tai niiden yhdistelmistä. Blokkeja on neljänlaisia: kuutio, prisma, pyramidi ja tetraedri. Ohjelma tehdään Linux –käyttöjärjestelmälle. Työkaluina ovat OpenGL, TCL/Tk, Glut ja C++.


Termiluettelo

Alla lueteltu hieman projektin aikana ilmenneitä uusia termejä:

 

TCL/Tk                              Tool Command Language/Toolkit. Ohjelmistopaketit Tcl ja Tk yhdessä tarjoavat ohjelmointiympäristön graafisten sovelluksien kehittämiseen /käyttämiseen. TCL on tulkattava komentorivipohjainen kieli.[2]                                         

GLUT                                 OpenGL Utility Toolkit. Itsenäinen laajennuskirjasto OpenGL-ohjelmien kirjoittamiseen. GLUT käsittää yksinkertaisen ohjelmointirajapinnan OpenGL:lle. GLUTia on mahdollista käyttää sekä Windows että X-Windows järjestelmissä. 

OpenGL                             Grafiikkakirjasto 3D-gafiikkaan ja mallinnukseen.

Blokki                                Kuutio, pyramidi, tetraedri tai prisma: tahot muodostuvat splineistä.

Nurbs                                 Non-uniform rational B-spline. Matemaattisesti tehokas tapa käsitellä monen muotoisia pintoja.

 

 

 

 

 

 

Sisäl

1        Johdanto. 1

2        Projektin taustat ja tavoitteet. 2

2.1    Projektin taustat. 2

2.2    Projektin tavoitteet. 2

2.2.1    ensisijaiset toiminnalliset vaatimukset. 3

2.2.2    Toissijaiset toiminnalliset vaatimukset. 3

2.2.3    Ei-toiminnalliset vaatimukset. 4

3        Kommentointi- ja nimeämiskäytäntö. 5

4        Sovelluksen rakenne. 6

5        Luokkajako. 7

5.1    cManager. 7

5.2    caGraphicalElement3d. 8

5.3    caBlock. 9

5.4    cHexaedron. 9

5.5    cTetraedron. 9

5.6    cPyramid. 10

5.7    cPrism. 10

5.8    cSurface. 10

5.9    cEdge. 11

5.10      cControlPoint. 11

6        Muita mahdollisia luokkia. 12

6.1    OpenGL ja Glut. 12

6.2    TCL/C++ -muunnos. 12

6.3    Bezier-pinta. 12

7        Käyttöliittymän kuvaus. 13

8        Lähteet. 14

9        Liitteet. 15

Liite 1.1: Käyttötapaus - Blokin luominen. 15

Liite 1.2 Käyttötapaus - Ohjelman sulkeminen. 16

Liite 1.3 Käyttötapaus - Pinnanmuotojen näyttäminen. 17

Liite 1.4 Käyttötapaus - Tahojen visualisointiverkkojen näyttäminen. 18

Liite 1.5: Käyttötapaus -  Attribuuttien muokkaaminen. 19

Liite 1.6: Käyttötapaus -  Uuden piirtoavaruuden luominen. 20

Liite 1.7: Käyttötapaus - Tallennetun piirtoavaruuden avaaminen näytölle  21

Liite 1.8: Käyttötapaus -  Piirtoavaruuden tallentaminen. 22

Liite 1.9: Käyttötapaus  -   Valitseminen. 23

Liite 1.10: Käyttötapaus  -   Siirtäminen. 24

Liite 1.11: Käyttötapaus - Blokin pyörittäminen valitun rotaatiopisteen ympäri.  25

Liite 1.12: Käyttötapaus - Katselupisteen muuttaminen. 26

Liite 1.13: Käyttötapaus - Poistaminen. 27

Liite 1.14: Käyttötapaus - Yhdistäminen. 28

Liite 1.15: Käyttötapaus - Erottaminen. 29

Liite 1.16: Käyttötapaus - Leikepöydälle kopiointi ja leikepöydältä liittäminen  30

Liite 1.17: Käyttötapaus - Toiminnon kumoaminen ja tekeminen uudelleen  31

 


1         Johdanto

 

Exodus-nimisessä tietotekniikan cum Laude -työprojektissa toteutetaan 3D-geometrian piirtämiseen ja havainnollistamiseen tarkoitettu sovellus, jolla kootaan laskenta-alueita yksinkertaisista kappaleista eli blokeista. Kyseisiä alueita käytetään muissa sovelluksissa fysikaalisten ilmiöiden mallintamiseen.

Toisessa luvussa kerrotaan projektin taustasta sovelluksen annetuista tavoitteista, jotka on jaettu ensisijaisiin ja toissijaisiin sekä ei-toiminnallisiin. Kolmas luku, nimeämiskäytäntö, kertoo miten nimeäminen on standardoitu. Neljännessä luvussa kerrotaan ohjelman rakenteesta ja viidennessä luvussa on luokkajaot metodeineen ja atribuutteineen. Muita mahdollisia luokkia on kuudennessa luvussa. Käyttöliittymää on kuvattu seitsemännessä luvussa  ja kahdeksannessa luvussa on käytetyt lähteet. Lopussa vielä liitteinä käyttötapaukset.

2         Projektin taustat ja tavoitteet

Tässä luvussa kerrotaan projektin taustoista sekä Exodus -projektin tavoitteista.

2.1        Projektin taustat

 

Numerola Oy on jyväskyläläinen, vuonna 1998 perustettu yritys, joka kehittää ohjelmistoja teollisuusprosessien laskennalliseen simulointiin. Simuloinneissa sovelletaan pääosin niin sanottua äärellisten elementtien menetelmää (FEM). Simulointiohjelmistoon kuuluu FEM-ratkaisijan lisäksi syöttötietoa ja laskennallisia tuloksia käsitteleviä ohjelmia. [1]  Näissä ohjelmistoissa kappaleitten geometria kuvataan elementtiverkolla ja sen  avulla lasketaan esimerkiksi lämpötiloja. Teollisuusprosessien mallinnuksessa käytetään yleensä yksinkertaisista elementeistä koostuvia laskenta-alueita. Elementit voivat olla esim. eri materiaaleista koostuvia kappaleita tai osa-alueita, joissa neste tai ilma virtaa.

Exodus-projekti liittyy Numerola Oy:n laajempaan Numerrin-tuotekehityshankkeeseen, jonka tavoitteena on monipuolinen ohjelmistopaketti laskennalliseen simulointiin ja optimointiin. Aikaisemmin keväällä 2001 on ko. yritykselle toteutettu työprojektin puitteissa Exoduksen 2D -versio: Genesis. [2]

2.2        Projektin tavoitteet

Exodus-projektin tavoitteena on suunitella ja toteuttaa Linux-käyttöjärjestelmässä toimiva graafinen työkalun rankenteellisten verkkoelementtien luontiin. Tavoitteet on jaettu ensisijaisiin ja toissijaisiin tavoitteisiin.

 

2.2.1        ensisijaiset toiminnalliset vaatimukset

·        Ohjelmalla tulee pystyä kuvaamaan erillistä verkkogeneraattoriohjelmaa varten kolmiulotteisia alueita. Sovelluksella tulee pystyä luomaan neljän tyyppisiä perusblokkeja: heksaedri, tetraedri, pyramidi ja prisma, kappaleiden pinnat ovat joko neliökulmion- tai kolmionmuotoisia. Kappaleiden pintoja voidaan tarpeen mukaan muokata pinnoilla sijaitsevien kontrollipisteiden  (nelikulmio 16 ja kolmio ? kappaletta ) avulla. Kontrollipisteiden määrittämää pintaa interpoloidaan NURB- (Non-Uniform Rational B-spline) tai Bezier-pinnalla. Kaikki koordinaatit on ilmoitettu fysikaalisissa koordinaateissa.

·        Blokeille voidaan suorittaa seuraavia operaatiota: lisääminen (create), poistaminen (delete), muokkaaminen (edit), lisäksi luotua blokkia tai yhteenliitettyjä blokkeja voidaan siirtää (move) ja pyörittää (rotate) erikseen määrättävän piisteen (rotation point) ympäri.

·        Blokkeja voi myös liittää (combine) toisiinsa tai liitetyt blokit voidaan eroittaa (separate), kuitenkin niin, että vain kolmion muotoisen pinnan voi liittää kolmioon ja nelikulmion muotoisen nelikulmioon.

·        Sovelluksessa on piirtoalue omana erillisenä ikkunanaan, jossa visualisoidaan suunniteltu kappale. Piirtoalueaalla  (OpenGL+GLUT) olevien kappaleiden valinta ja niiden ominaisuuksien muokkaus tapahtuu pääsääntöisesti erillisiltä lomakkeilta (Tcl/Tk), mutta piirtoalueen kameran paikkaa voidaan liikuttaa näppäintenavulla. Luotuja kappaleita voidaan haluttaessa edelleen visualisoida joko verkolla(wireframe) tai kiinteällä pinnalla (solid).

2.2.2        Toissijaiset toiminnalliset vaatimukset

·        Piirtoikkunassa tapahtuvien blokeille suoritettavien hiiritoimintojen lisääminen esimerkiksi valinta tai pyöritys.

·        Apuruukon (grid) ja snap-toiminnon lisääminen piirtoikkunaan.

·        Valon lisääminen.

·        Luotujen blokkien tai niiden pintojen visualisointi erikseen määritettävällä tekstuurilla , joka määräytyy esim. blokin materiaaliparametrin mukaan.

·        Tietorakenteen tallentaminen tiedostoon OpenDWG-formaatissa.

2.2.3        Ei-toiminnalliset vaatimukset

·        Ohjelman tulee toimia Linux-käyttöjärjestelmässä.

·        Tietorakenteen sisältö voidaan tallentaa tiedostoon, josta se voidaan jälleen lukea. Tiedostoon tallennetaan blokkikohtaisten tietojen lisäksi blokkien liitossuhteet ja kamerakulma tallennus hetkellä.

 

 

 

 

3         Kommentointi- ja nimeämiskäytäntö

 

Sovellusta ohjelmoitaessa noudatetaan tässä luvussa esitettäviä nimeämis- ja kommentointikäytäntöjä.

Kaikki nimeämiset ja kommentoinnit tehdään englanniksi. Ohjelmalistauksen alussa on tekijän nimi, käyttötarkoitus ja lyhyt kuvaus sen toiminnasta. Kaikki ei-triviaalit muuttujat ja tietorakenteet kommentoidaan niiden esittelyn yhteydessä. Kaikkien aliohjelmien implementaationosan alkuun on laitettu kommenttirivi, jolla kuvataan ko. aliohjelman toimintaa sekä sille välitettävien parametrien sekä mahdollisten paluuarvojen merkitystä.

Muutamia esimerkkejä nimeämiskäytännöstä:

struct     sTyypinNimi

class      cLuokanNimi

aliohjelma aliohjelmanNimi

muuttuja   muuttujannimi

 

Kaikki tiedostot nimetään niiden sisällön mukaan. Esim. C++-kielen luokan cLuokka -luokan implementaation sisältävät tiedostot nimettäisiin luokka.cpp ja luokka.hpp. Vastaavasti Tcl/Tk -tiedostot nimetään samalla tavoin kuvaamaan sisältöä.

 

 

 

4         Sovelluksen rakenne

 

 

 

5         Luokkajako

Saantimetodeita ei ole lueteltu.

5.1        cManager

Vastaa tietorakenteen ylläpidosta ja sen operaatioista sekä ohjelman osioiden välisestä kommunikoinnista.

5.1.1.1     Attribuutit

*blocks                                   piirtoavaruuden kaikki blokit

*points                                    piirtoavaruuden kaikki kontrollipisteet

*edges                                     piirtoavaruuden kaikki särmät

*surfaces                                 piirtoavaruuden kaikki pinnat

*selected                                 piirtoavaruuden valitut kohteet

*combined                               kaikki valittuihin blokkeihin yhdistetyt blokit

5.1.1.2     Metodit

cManager()                              luokan muodostin

~cManager()                           luokan hajotin

move(x,y,z)                              siirtää valittuja kohteita sekä valittuihin blokkeihin yhdistettyjä blokkeja vektorin x,y,z verran

rotate(x,y,z, anglexy, angleyz, anglexz)        kiertää valittuja kohteita rotaatiopisteen x,y,z ympäri kulmien anglexy, angleyz, anglex7z verran

save()                                      tallentaa piirtoavaruuden kohteet sekä kameran tiedot

open(file)                                 avaa tiedoston file sisältämän piirtoavaruuden

undo()                                     peruu viimeisimmän toimenpiteen

redo()                                      tekee uudelleen viimeisimmän toimenpiteen

select(id)                                  valitsee kohteen id

deselect(id)                              poistaa valinnat kohteesta id

isSelected(element[])                Tarkistaa onko valittuna graafiset elementit, jota valittu komento edellyttää.

createHexaedron([kulmapisteiden koordinaatit], material, optional, [tihennystiedot], combine)             luo uuden heksaedrin pisteiden koordinaattien mukaan, määrittää sen materiaaliparametrin sekä valinnaisen parametrin sekä täydentää sen tihennystiedot. Jos combine arvo on asetettu, niin luotu blokki yhdistetään ennalta valittuun tahkoon.

createTetraedron (...)               vertaa edellä

createPrism (...)                       vertaa edellä

createPyramid (...)                   vertaa edellä

delete()                                    poistaa valitut blokit

combineWithMove(surface, point1, point2)                      siirtää ja yhdistää ennalta valitun tahkon ja siihen liittyvän blokin tahkoon surface pisteiden point1 ja point2 mukaisesti

combineWithStretch(surface, point1, point2)                    venyttää ja yhdistää ennalta valitun tahkon tahkoon surface pisteiden point1 ja point2 mukaisesti

separate()                                erottaa ennalta valitun yhteisen tahkon blokit toisistaan

showMesh()                            näyttää tai piilottaa ennalta valittujen kohteiden visualisointiverkon

close()                                     sulkee ohjelman

viewMode()                             muuttaa ennalta valittujen kohteiden esitysmuodon joko rautalankamalliksi tai kiinteäksi

viewPoint(kameran tiedot)        muuttaa

refresh()                                   päivittää piirtoavaruuden näytön

 

5.2        caGraphicalElement3d

Abstrakti pääluokka kaikille piirtoavaruuden elementeille

5.2.1.1     Attribuutit

id                                             elementin tunnus

processed                                käsitelty-lippu

activation                                 aktivointi-lippu

 

5.2.1.2     Metodit

setProcessed()                         asettaa kohteen käsitellyksi

resetProcessed()                      poistaa kohteen käsitelty-merkinnän

setActivation()                         asettaa kohteen aktivoinnin

resetActivation()                      poistaa kohteen aktivoinnin

 

5.3        caBlock

Abstrakti luokka kaikille blokeille, peritään cGraphicElement3d:stä

5.3.1.1     Attribuutit

material

optional

5.3.1.2     Metodit

findCombined(*combined)       Lisää combined-listaan tähän blokkiin yhdistetyt blokit

setMaterial()                            asettaa blokin materiaaliparametrin

setOptional()                            asettaa blokin valinnaisen parametrin

5.4        cHexaedron

Vastaa heksaedrista, peritään cBlockista.

5.4.1.1     Attribuutit

*surfaces                                 osoittimet blokin tahkoihin

5.4.1.2     Metodit

-

5.5        cTetraedron

Vastaa tetraedrista, peritään cBlockista.

5.5.1.1     Attribuutit

*surfaces                                 osoittimet blokin tahkoihin

5.5.1.2     Metodit

-

5.6        cPyramid

Vastaa pyramidista, peritään cBlockista.

5.6.1.1     Attribuutit

*surfaces                                 osoittimet blokin tahkoihin

5.6.1.2     Metodit

-

5.7        cPrism

Vastaa prismasta, peritään cBlockista.

5.7.1.1     Attribuutit

*surfaces                                 osoittimet blokin tahkoihin

5.7.1.2     Metodit

-

5.8        cSurface

Vastaa blokin tahkosta, peritään cGraphicElement3d:stä

5.8.1.1     Attribuutit

*edges                                     osoittimet tahkon särmiin

*controlpoints                          osoittimet tahkon kontrollipisteisiin

*block                                     osoittimet blokkeihin, joihin tahko kuuluu

meshvisible                              kontrolloi visualisointiverkon näkyvyyttä

5.8.1.2     Metodit

setMeshvisible()                       vaihtaa visualisointiverkon näkyvyyden tilaa

Bezier???                                 kuuluuko bezier-pinnan pisteiden laskenta tahkon vastuulle?

 

5.9        cEdge

Vastaa blokin särmästä, peritään cGraphicElement3d:stä

5.9.1.1     Attribuutit

*controlpoints                          osoittimet särmän kontrollipisteisiin

divdata???                               tihennystiedot samat kuin Genesiksessä?

5.9.1.2     Metodit

setDivdata()???                        tihennysmetodit samat kuin Genesiksessä?

 

5.10   cControlPoint

Vastaa kontrollipisteestä, peritään cGraphicElement3d:stä

5.10.1.1 Attribuutit

coordinates                              pisteen koordinaatit globaalissa koordinaatistossa

5.10.1.2 Metodit

move(x,y,z)                              siirtää pistettä vektorin x,y,z verran

rotate(x,y,z, anglex, angley, anglez)             kiertää pistettä rotaatiopisteen x,y,z ympäri kulmien anglex, angley, anglez verran

setCoordinates(x,y,z)               asettaa pisteen koordinaateiksi x,y ja z

 

6         Muita mahdollisia luokkia

Seuraavat ohjelma-osiot ovat selvityksen alla toteutetaanko ne luokkina vai aliohjelmakirjastoina.

6.1        OpenGL ja Glut

Vastaa avaruuden piirtotoimenpiteistä näyttöön

6.2        TCL/C++ -muunnos

Vastaa TCL-komentojen muuntamisesta C++-kielelle ja päin vastoin, jotta käyttöliittymän ja toiminnallisen osan rajapinta säilyy puhtaasti C++-kielisenä -> parantaa uudelleenkäyttöä.

6.3        Bezier-pinta

Vastaa blokin tahkon pinnasta, joka määrätään kontrollipisteiden avulla.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

7         Käyttöliittymän kuvaus

Käyttöliittymä koostuu kahdesta pääikkunasta: käyttöliittymä ja piirtoalue. Alla olevassa kuvassa on näkyvillä Exoduksen pääikkuna, joka ohjelman käynnistyessä luodaan näytölle yhdessä piirtoikkunan kanssa.

 

Käyttöliittymään tulee useita erilaisia dialogeja, jotka avautuvat käyttäjälle esim. tietoja kysyessä. Näistä ei kuitenkaan vielä tässä vaiheessa ole mallikuvaa. Ja myöskään piirtoikkunasta ei ole kuvaa.

8         Lähteet

[1] Hakala Jussi, Laitinen Mika, Numerrin1.0-käsikirja Numerola Oy, Jyväskylä, 2001

[2] Genesis-kansio, kevät 2001, Tietotekniikan laitos

 

 

9         Liitteet

Käyttötapaukset 18.10.2001

 

Liite 1.1: Käyttötapaus - Blokin luominen

Nimi:                                   Create block

 

Esiehdot:                            -

 

Kuvaus:                              1. Käyttäjä valitsee luontikomennon ja sen jälkeen haluamansa blokkityypin (Tetrahedron, Pyramid, Hexaedron tai Prism). Käyttäjä voi määrittää nopeasti blokin korkeus-, leveys- ja syvyysparametrien avulla. Muut blokkiin liittyvät tarkat arvot voidaan määrittää editoimalla blokkia nopean luonnin jälkeen. 2. Jos ennen luontikomennon suorittamista valittuna on tahko, yhdistetään luotava blokki suoraan ennalta valittuun tahkoon. Tässä tapauksessa käyttäjä antaa puuttuvat blokin tiedot, ja  yhdistämiseen liittyvät rajoitukset pätevät.

 

Poikkeukset:                     Jos käyttäjä antaa virheellisiä arvoja, näyttöön tulee virheilmoitus.

 

Jälkitilanne:                      Blokki on luotu.
Liite 1.2 Käyttötapaus - Ohjelman sulkeminen

Nimi:                                   Exit

 

Esiehdot:                            -

 

Kuvaus:                              Käyttäjä valitsee sulkemiskomennon. Jos käyttäjä on tehnyt jotain piirtotoimenpiteitä ja niitä ei ole tallennettu, niin ohjelma kysyy käyttäjältä halutaanko tehdyt muutokset tallentaa.

 

Poikkeukset:                     Kun ohjelma kysyy tallennetaanko tehdyt muutokset, voi käyttäjä peruuttaa sulkemisen, jolloin ohjelma palaa komentoa edeltävään tilaan.

 

Jälkitilanne:                      Ohjelma on  suljettu ja mahdolliset muutokset tallennettu tai tallentamatta valinnan mukaan.
Liite 1.3 Käyttötapaus - Pinnanmuotojen näyttäminen

Nimi:                                   View wireframe/solid

 

Esiehdot:                            -

 

Kuvaus:                              Käyttäjä valitsee joko ennalta valittujen blokkien tai kaikkien blokkien esitysmuodoksi rautalankamalliesityksen tai kiinteän esityksen.

 

Poikkeukset:                     -

 

Jälkitilanne:                      Valitut tai kaikki blokit näkyvät valinnan mukaan joko rautalankamallina tai kiinteänä. Rautalankamallissa näkyvissä ovat myös tahkojen visualisointiverkot.
Liite 1.4 Käyttötapaus - Tahojen visualisointiverkkojen näyttäminen

Nimi:                                   Show/hide mesh

 

Esiehdot:                            Tahkoja ja vain tahkoja on oltava valittuna ainakin yksi.

 

Kuvaus:                              Käyttäjä asettaa ennalta valittujen tahkojen visualisointiverkot näkyviksi tai piilottaa ne.

 

Poikkeukset:                     -

 

Jälkitilanne:                      Tahkojen visualisointiverkot ovat näkyvissä tai piilotettu valinnan mukaan.


Liite 1.5: Käyttötapaus -  Attribuuttien muokkaaminen

 

Nimi:                                   Edit attributes

 

Esiehdot:                            Ainakin yksi kohde on oltava valittuna.

 

Kuvaus:                              Käyttäjä valitsee muokkaustoiminnon ja muuttaa attribuuttien arvoa.

 

Poikkeukset:                     Jos syöte ei ole sallittu, hylätään käyttäjän syöttämä arvo ja säilytetään kentässä entinen arvo.

 

Jälkitilanne:                      Kohteen attribuutti on muuttunut.
Liite 1.6: Käyttötapaus -  Uuden piirtoavaruuden luominen

Nimi:                                   New

 

Esiehdot:                            -

 

Kuvaus:                              Käyttäjä luo uuden piirtoavaruuden. Jos nykyinen piirtoavaruus ei ole tyhjä, ohjelma kysyy tallennetaanko nykyinen tilanne.

 

Poikkeukset:                     Kun ohjelma kysyy tallennetaanko tehdyt muutokset, voi käyttäjä peruuttaa uuden piirtoavaruuden luomisen, jolloin ohjelma palaa komentoa edeltävään tilaan.

 

Jälkitilanne:                      Piirtoavaruus on tyhjä ja vanha tilanne tallennettu tai tallentamaton valinnan mukaan.
Liite 1.7: Käyttötapaus - Tallennetun piirtoavaruuden avaaminen näytölle

 

Nimi:                                   Open

 

Esiehdot:                            Piirtoavaruus täytyy olla tallennettuna tiedostossa.

 

Kuvaus:                              Käyttäjä antaa tiedostonavauskomennon ja ohjelma tuo näyttöön luettelon asianmukaisista tiedostoista. Käyttäjä valitsee haluamansa tiedoston ja tiedoston sisältämä piirtoavaruus avautuu näyttöön. Jos piirtoavaruus ei ole tyhjä ennen toiminnon aloitusta, ohjelma kysyy tallennetaanko nykyinen tilanne ennen toisen avaamista.

 

Poikkeukset:                     Avaaminen ei onnistu, jos ohjelma ei osaa lukea tiedostoa tai sitä ei löydy, jolloin ohjelma palaa komentoa edeltävään tilaan. Kun ohjelma kysyy tallennetaanko tehdyt muutokset, voi käyttäjä peruuttaa toisen piirtoavaruuden avaamisen, jolloin ohjelma palaa komentoa edeltävään tilaan.

 

Jälkitilanne:                      Näyttöön on avattu piirtoavaruus blokkeineen valitusta tiedostosta ja mahdollinen komentoa edeltävä piirtoavaruus tallennettu tai tallentamaton valinnan mukaan.
Liite 1.8: Käyttötapaus -  Piirtoavaruuden tallentaminen

 

Nimi:                                   Save tai Save as

 

Esiehdot:                            -

 

Kuvaus:                              Käyttäjä antaa tallennuskomennon ja järjestelmä kysyy minkä nimiseksi tiedostoksi piirtoavaruus tallennetaan. Käyttäjä määrittää tiedostonimen ja hyväksyy sen. Jos piirtoavaruus on tallennettu jo aiemmin, käyttäjä voi tallentaa piirtoavaruuden nopeasti samalla tiedostonimellä kuin ennenkin. Käyttäjä voi peruuttaa tallennuksen ennen tiedostonimen hyväksymistä, jolloin ohjelma palaa komentoa edeltävään tilaan.

 

Poikkeukset:                     Jos tiedostoon ei voi tallentaa näyttöön tulee virheilmoitus.

 

Jälkitilanne:                       Piirtoavaruus on tallennettu määritettyyn tiedostoon. Myös katselupiste on tallennettuna.
Liite 1.9: Käyttötapaus  -   Valitseminen

Nimi:                                       Select

 

Esiehdot:                                Vähintään yksi blokki tulee olla luotuna.

 

Kuvaus:                                  Käyttäjä valitsee haluamansa kohteet (piste, särmä, tahko  tai blokki).

 

Poikkeukset:                          -

 

Jälkitilannne:                         Valittujen kohteiden ulkoasu muuttuu kertoen siitä, että kyseiset kohteet ovat tulleet valituksi.
Liite 1.10: Käyttötapaus  -   Siirtäminen

Nimi:                            Move

 

Esiehdot:                          Siirrettävä kohde (piste, särmä, tahko tai blokki) on valittu.

 

Kuvaus:                            Käyttäjä siirtää valitun kohteen paikasta toiseen määrittämällä sille uuden paikan globaalissa koordinaatistossa siirtovektorin avulla.

 

Poikkeukset:                   -

 

Jälkitilanne:                Kohde on siirtynyt uuteen paikkaan.
Liite 1.11: Käyttötapaus - Blokin pyörittäminen valitun rotaatiopisteen ympäri.

Nimi:                            Rotate block

 

Esiehdot:                     Pyöritettävä blokki on oltava valittuna.

 

Kuvaus:                            Käyttäjä määrittää valitulle blokille uuden paikan rotaatiopisteen suhteen. Rotaatio määritetään kahden tai kolmen asteluvun avulla.

 

Poikkeukset:               -

 

Jälkitilanne:                Blokki on uudessa asennossa.
Liite 1.12: Käyttötapaus - Katselupisteen muuttaminen

Nimi:                            Rotate ja Zoom

 

Esiehdot:                     -

 

Kuvaus:                            Käyttäjä pyörittää katselupistettä annetun pisteen ympäri tai muuttaa katselupisteen etäisyyttä annetusta pisteestä.

 

Poikkeukset:               -

 

Jälkitilanne:                Katselupisteen sijainti on muuttunut.
Liite 1.13: Käyttötapaus - Poistaminen

Nimi:                                   Delete

 

Esiehdot:                            On oltava yksi tai useampi blokki valittuna.

 

Kuvaus:                              Käyttäjä poistaa valitut kohteet.

 

Poikkeukset:                     Jos valittuna on kontrollipiste, särmä tai tahko toiminto peruutetaan ja palataan sitä edeltävään tilaan.

 

Jälkitilanne:                      Ennalta valitut blokit on poistettu.
Liite 1.14: Käyttötapaus - Yhdistäminen

Nimi:                                   Combine

 

Esiehdot:                            On oltava valittuna blokin tahko sekä kaksi siihen kuuluvaa kulmapistettä.

 

Kuvaus:                              a) Käyttäjä valitsee ensin yhdistämisen siirron kanssa ja sitten kohdeblokin tahkon sekä kaksi siihen kuuluvaa kulmapistettä. Tämän jälkeen ennalta valittu blokki siirtyy ensin kohdeblokkiin kiinni ja ennalta valittu tahko mukautuu sitten kohdeblokin tahkoon. b) Käyttäjä valitsee yhdistämisen ilman siirtoa, jolloin ennalta valittu tahko venyy kiinni kohdeblokin tahkoon

 

Poikkeukset:                     1. Jos käyttäjä valitsee yhdistämistoiminnossa kaksi erimuotoista tahkoa ts. kolmion ja suorakaiteen, näyttöön tulee virheilmoitus ja palataan yhdistämistä edeltävään tilaan.

2. Ns. itsensä yhdistäminen estettävä, eli käyttäjä ei voi valita kahta saman blokin tahkoa.

3. Jos valitaan yhdistäminen joka vaatii kappaleen kiertoa, yhdistäminen ei onnistu.

 

Jälkitilanne:                      Yhdistämiskomennon jälkeen valittu tahko on venynyt/siirtynyt kiinni ennalta valittuun tahkoon.
Liite 1.15: Käyttötapaus - Erottaminen

Nimi:                                   Separate

 

Esiehdot:                            Kaksi blokkia on oltava yhdistettynä ja niiden yhteinen tahko valittuna.

 

Kuvaus:                              Käyttäjä valitsee erottamiskomennon, jonka jälkeen blokit eivät ole enää yhdistettyinä.

 

Poikkeukset:                     -

Jälkitilanne:                      Yhdistetyt blokit on erotettu.
Liite 1.16: Käyttötapaus - Leikepöydälle kopiointi ja leikepöydältä liittäminen

Nimi:                                   Copy ja Paste

 

Esiehdot:                            On oltava vähinään yksi blokki valittuna.

 

Kuvaus:                              Käyttäjä valitsee ensin kopiointikomennon ja sitten liittämiskomennon.

 

Poikkeukset:                     Jos valittuna on tahko, kontrollipiste tai särmä, näyttöön tulee virheilmoitus ja palataan komentoa edeltävään tilaan.

 

Jälkitilanne:                      Ennalta valitut blokit ovat monistuneet.
 

Liite 1.17: Käyttötapaus - Toiminnon kumoaminen ja tekeminen uudelleen

Nimi:                                   Undo ja Redo

 

Esiehdot:                            On oltava suoritettuna toiminto, joka on muuttanut piirtoavaruuden rakennetta.

 

Kuvaus:                              Kun käyttäjä valitsee kumoamistoiminnon ja piirtoavaruus palaa toiminnon suoritusta edeltävään tilaan. Kun käyttäjä valitsee uudelleensuoritustoiminnon suoritetaan edellinen kumottu toiminto uudelleen.

 

Poikkeukset:                     -

 

Jälkitilanne:                      Ennalta suoritettu toiminto on kumottu ja/tai kumottu toiminto on tehty uudelleen.