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++.
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ältö
2 Projektin taustat ja tavoitteet
2.2.1 ensisijaiset
toiminnalliset vaatimukset
2.2.2 Toissijaiset
toiminnalliset vaatimukset
2.2.3 Ei-toiminnalliset
vaatimukset
3 Kommentointi- ja nimeämiskäytäntö
Liite 1.1:
Käyttötapaus - Blokin luominen
Liite 1.2
Käyttötapaus - Ohjelman sulkeminen
Liite 1.3
Käyttötapaus - Pinnanmuotojen näyttäminen
Liite 1.4
Käyttötapaus - Tahojen visualisointiverkkojen näyttäminen
Liite 1.5:
Käyttötapaus - Attribuuttien
muokkaaminen
Liite 1.6:
Käyttötapaus - Uuden piirtoavaruuden
luominen
Liite 1.7:
Käyttötapaus - Tallennetun piirtoavaruuden avaaminen näytölle
Liite 1.8:
Käyttötapaus - Piirtoavaruuden
tallentaminen
Liite 1.9:
Käyttötapaus - Valitseminen
Liite 1.10:
Käyttötapaus - Siirtäminen
Liite 1.11:
Käyttötapaus - Blokin pyörittäminen valitun rotaatiopisteen ympäri.
Liite 1.12:
Käyttötapaus - Katselupisteen muuttaminen
Liite 1.13:
Käyttötapaus - Poistaminen
Liite 1.14:
Käyttötapaus - Yhdistäminen
Liite 1.15:
Käyttötapaus - Erottaminen
Liite 1.16:
Käyttötapaus - Leikepöydälle kopiointi ja leikepöydältä liittäminen
Liite 1.17:
Käyttötapaus - Toiminnon kumoaminen ja tekeminen uudelleen
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.
Tässä luvussa kerrotaan projektin taustoista sekä Exodus -projektin tavoitteista.
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]
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.
· 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).
· 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.
· 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ä.
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öä.
Saantimetodeita ei ole lueteltu.
Vastaa tietorakenteen ylläpidosta ja sen
operaatioista sekä ohjelman osioiden välisestä kommunikoinnista.
*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
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
Abstrakti pääluokka kaikille piirtoavaruuden
elementeille
id elementin
tunnus
processed käsitelty-lippu
activation aktivointi-lippu
setProcessed() asettaa kohteen käsitellyksi
resetProcessed() poistaa kohteen käsitelty-merkinnän
setActivation() asettaa kohteen aktivoinnin
resetActivation() poistaa kohteen aktivoinnin
Abstrakti luokka kaikille blokeille, peritään
cGraphicElement3d:stä
material
optional
findCombined(*combined) Lisää combined-listaan tähän blokkiin yhdistetyt blokit
setMaterial() asettaa blokin materiaaliparametrin
setOptional() asettaa blokin valinnaisen parametrin
Vastaa heksaedrista, peritään cBlockista.
*surfaces osoittimet
blokin tahkoihin
-
Vastaa tetraedrista, peritään cBlockista.
*surfaces osoittimet
blokin tahkoihin
-
Vastaa pyramidista, peritään cBlockista.
*surfaces osoittimet
blokin tahkoihin
-
Vastaa prismasta, peritään cBlockista.
*surfaces osoittimet
blokin tahkoihin
-
Vastaa blokin tahkosta, peritään
cGraphicElement3d:stä
*edges osoittimet
tahkon särmiin
*controlpoints osoittimet tahkon kontrollipisteisiin
*block osoittimet
blokkeihin, joihin tahko kuuluu
meshvisible kontrolloi visualisointiverkon
näkyvyyttä
setMeshvisible() vaihtaa visualisointiverkon näkyvyyden tilaa
Bezier??? kuuluuko
bezier-pinnan pisteiden laskenta tahkon vastuulle?
Vastaa blokin särmästä, peritään
cGraphicElement3d:stä
*controlpoints osoittimet särmän kontrollipisteisiin
divdata??? tihennystiedot
samat kuin Genesiksessä?
setDivdata()??? tihennysmetodit samat kuin Genesiksessä?
Vastaa kontrollipisteestä, peritään
cGraphicElement3d:stä
coordinates pisteen koordinaatit globaalissa
koordinaatistossa
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
Seuraavat ohjelma-osiot ovat selvityksen alla
toteutetaanko ne luokkina vai aliohjelmakirjastoina.
Vastaa avaruuden piirtotoimenpiteistä näyttöön
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öä.
Vastaa blokin tahkon pinnasta, joka määrätään
kontrollipisteiden avulla.
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.
[1] Hakala Jussi, Laitinen Mika, Numerrin1.0-käsikirja Numerola Oy, Jyväskylä, 2001
[2] Genesis-kansio, kevät 2001, Tietotekniikan laitos
Käyttötapaukset 18.10.2001
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.
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.
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.