This page is entirely in Swedish. Click here for an abstract in English.

Rapporten finns ännu bara på svenska.


RoofCon

en prototyp för ett objektorienterat
grafiskt gränssnitt för konstruktion av takplan.

Mikael Hägglund
Andreas Nilsson

Sammanfattning

Den här rapporten beskriver hur ett objektorienterat grafiskt användargränssnitt och arbetssätt för att rita och konstruera hela takplan kan se ut. Det finns egentligen inget program som är speciellt anpassat för att rita och konstruera takplan på marknaden i dag. Däremot finns det flera program för allmänna rituppgifter där man kan rita nästan vad som helst. Det finns också ett flertal program för beräkningar av konstruktioner, men inget program som löser båda uppgifterna. Gränssnittet och arbetssättet har implementerats i en prototyp för att det skall vara enkelt att se och testa.

Prototypen blev så pass lyckat att uppdragsgivaren har beslutat att utveckla den vidare till ett program för distribution. Programmets målgrupp blir konstruktörer och försäljare av hus och takstolar företrädesvis i Sverige och Danmark. Förhoppningsvis kommer programmet att användas i fler länder.

Förord

Examensarbetet RoofCon startade i början av oktober 1995 och avslutades i början av mars 1996 och har utförts vid Consultec Byggprogram AB i Skellefteå. Consultec Byggprogram AB är ett konsultföretag som utvecklar datorprogram för byggbranschen. Uppgiften att ta fram ett objektorienterat grafiskt gränssnitt och arbetssätt för ritning och konstruktion av takplan gavs till Consultec av Palsgaard Træ i Danmark. Consultec ansåg uppgiften att ta fram ett fungerande gränssnitt och en rationell metod för att lösa problemet kunde vara ett lämpligt examensarbete för två personer. Examensarbetet bestod i att ta fram en prototyp som Consultec senare skulle avgöra om de ville gå vidare med eller inte.

Vi vill tacka vår handledare på Consultec Mats Johansson för stöd och hjälp under tiden för examensarbetet. Vi önskar också tacka vår handledare och examinator vid Högskolan i Luleå, Jan-Erik Moström för hjälp och stöd under examensarbetets gång. Vidare vill vi tacka Urban Lindberg, Rolf Wikman och övriga på Consultec Byggprogram AB för att de ställt upp med att hjälpa och stötta oss i vårt arbete. Vi vill samtidigt passa på att tacka Arkitekter och Konstruktörer AB, Byggteknik AB och NTH (Norges Tekniska Högskola, numera NTNU Norges Tekniska Naturvetenskapliga Universitet) för konsultationer och rådfrågning. Vi vill även tacka Nils-Ivar Bovim och Roald Nielsen för tips och användande av programkod. Slutligen önskar vi tacka Byggtekniks kunder som tog sig tid att besvara den utskickade enkäten om programmet.

Innehållsförteckning

1 Inledning
2 Bakgrund
3 Gränssnittet
3.1 Allmänt
3.2 Inmatningsraden
3.3 Knapparna
3.4 Dialoger
3.5 Menyn
3.6 Övrigt
4 Metoden
4.1 Framtagande av metoden
4.2 Metoden, allmänt
4.2.1 Färgerna
4.2.2 Dialogerna
4.2.3 Noggrannhet
4.2.4 Bilder
4.2.5 Kompromisser
4.2.6 Tangentbordet
4.2.7 Musen



4.3 Metoden, en beskrivning
4.3.1 Objektorienterat användargränssnitt
4.3.2 Fäst mot
4.3.3 Plockruta
4.3.4 Senaste punkt
4.3.5 Nytt dokument
4.3.6 Uppdelning mellan bas- och tilläggskommandon
4.3.7 Stödlinjer
4.3.8 Väggarkivet
4.3.9 Rita vägg
4.3.10 Takytorna
4.3.11 Makrofunktioner
4.3.12 Guiden
4.3.13 Beskrivning av skapande av ett projekt
5 Teknik
5.1 Associativ måttsättning
5.2 Punktbufferten
5.3 Ångra/gör om
5.4 Översättningar
5.5 Riktlinjer
6 Slutsatser
7 Referenser

1 INLEDNING

Consultec Byggprogram AB har under ett antal år haft ute ett program, TrussCon, i vilket man kan rita och konstruera enskilda takstolar i Microsoft Windows-miljö. Programmet har funnits ute en tid och har fått ett fint gensvar på marknaden. För närvarande finns det cirka 200 licenser ute. Det har emellertid kommit in önskemål från vissa kunder att Consultec skulle ta fram ett nytt program i vilket man kunde rita och konstruera hela takplan på en gång. Programmet skulle hålla samman takstolarna i ett och samma projekt så att man skulle kunna få ut samkörda kaplistor, samkörda kalkyler samt ritningar på takstolar och takytor. Några månader innan examensarbetets början kom en konkret förfrågan från Palsgaard Træ i Danmark, men Consultec hade inte tid att börja med det direkt. Consultec tyckte att det skulle kunna vara ett bra examensarbete att ta fram en prototyp på arbetsgången och gränssnittet för ett dylikt program. Skulle det sedan visa sig att prototypen blev lyckad kunde Consultec i så fall gå vidare och utveckla programmet fullt ut, för att sedan distribuera programmet.

Vid examensarbetets start fanns det egentligen ingenting annat än målsättningen över vilka saker som prototypen borde klara. Målsättningen var att åstadkomma ett objektorienterat grafiskt gränssnitt och arbetsgång för ett program som kan rita och konstruera takplan. I ett objektorienterat gränssnitt väljer man först de objekt man vill manipulera, sedan funktionen man vill använda. Detta gör att man slipper separata funktioner för varje typ av objekt. (Se vidare under rubriken 4.3.1 Objektorienterat användargränssnitt)

Gränssnittet och arbetsgången skall passa både säljare och konstruktörer. Det vill säga det skall vara enkelt för "sällananvändare" (säljare) samtidigt som det skall vara snabbt och rationellt för professionella användare (konstruktörer).

All specificering av gränssnittet och arbetsgången skulle göras som en del i examensarbetet. För att inte göra två parallella system för dimensioneringen och konstruktionen av takstolar så skulle prototypen kunna styra TrussCon. De modifieringar som skulle behövas i TrussCon skulle inte ingå som en del i examensarbetet. Tidsåtgången var bedömd så att prototypen skulle vara klart den första mars, men detta ändrades efter en tid. Examensarbetet skulle vara klart den första mars och prototypen skulle vara så klar som det var möjligt vid den tidpunkten.

Prototypen skulle implementeras i Microsoft Visual C++. Om prototypen skulle bli så lyckad att Consultec ville gå vidare med den behövdes det riktlinjer över hur man skall skriva koden. Uppgiften att ta fram riktlinjer för program i Visual C++ ingick också i examensarbetet.

Rapporten är upplagd så att först kommer en bakgrund till arbetet där teorier och verktyg som utnyttjats för arbetet redovisas. Sedan kommer en redovisning av det egna arbetet, där vi redovisar delar av gränssnittet och arbetsgången med förklaringar och motiveringar till vissa ställningstaganden. Även ett avsnitt med vissa intressanta implementationstekniska lösningar ingår. I slutet av rapporten har vi lagt slutsatser och referenser.

2 BAKGRUND

Syftet med examensarbetet var att ta fram ett gränssnitt och en arbetsgång för ett datorprogram för konstruktion av takplan, varför det är lite tunt med färdiga teorier. Vi har emellertid haft en del litteratur med synpunkter på hur man bör göra och vad som man inte bör göra när man skapar ett gränssnitt. Vi har även haft tillgång till Microsofts rekommendationer för program som utvecklas i Microsoft Windows. Vår uppgift var sedan att kompromissa mellan dessa åsikter, standarder och vad som faktiskt är möjligt att förverkliga.

Det programmeringsverkyg som vi använt är Microsoft Visual C++ 1.52. Operativsystemen som vi kört på är Microsoft Windows 3.11 och Microsoft Windows ‘95. Vi har haft tillgång till att titta på några olika CAD-program (Computer Aided Design) nämligen AutoCad och AutoSketch från Autodesk, TrussCon från Consultec, Lambda från NTH, HusPartner från DDS (Data Design System A/S). Vidare har vi haft tillgång till Microsoft Excel och Microsoft Word för att skriva rapporten och för att titta på gränssnittet.

De datorer vi har använt har varit två datorer från Hewlett Packard, en med en 80486 DX 100 MHz processor och en med en Pentium 90 MHz processor. Vi har även testat programmet på en bärbar dator från IBM för att kunna kontrollera att programmet fungerar på en dylik.

3 GRÄNSSNITTET

Här beskriver vi programmets användargränssnitt.

3.1 ALLMÄNT

Inför starten av programmet kan användaren välja mellan att starta det med ett angivet projekt, med senast använda projekt eller helt utan projekt att arbeta med. På grund av fil- och kataloghanteringen kräver RoofCon att användaren alltid arbetar med ett projekt. (Se vidare under 4.3.5 Nytt dokument) Väljer användaren att starta programmet utan ett projekt, visar vi en miniversion av programmet där användaren endast kan skapa ett nytt projekt eller öppna ett befintligt projekt. (Se figur 3:1) I miniversionen går det naturligtvis också att avsluta programmet. När användaren valt projekt visas den fullständiga versionen av RoofCon. ( Se figur 3:2)


Figur 3:1 RoofCon i miniversion


Figur 3:2 Fullständig version av RoofCon

Arkivmenyn har en lista över de fyra senast använda projekten, vilket gör det möjligt att direkt komma åt de vanligaste projekten man arbetar med.

Programmet har ett antal knappar som ger "direktåtkomst" till menyalternativ. Dessa har delats upp i två verktygsrader, en för mer allmänna funktioner och en för konstruktionsinriktade funktioner.

Statusraden innehåller förutom ett fält med korta hjälptexter även koordinaterna för senaste punkt(se vidare under4.3.4 Senaste punkt) och för musmarkören. För kommandoflödet och inmatning finns det dessutom ytterligare en verktygsrad, som vi kallar inmatningsraden.

Eftersom utrymmet i huvudfönstret är begränsat har användaren full frihet att välja vilka rader som ska synas på skärmen med undantag för inmatningsraden. Den är så viktig för kommandona att den alltid skall finnas med. Bristen på skärmutrymme är också orsaken till att programmet startas upp så att det täcker hela skärmytan.

Vi har lagt ner stor möda på att få knapparna och menyerna att visa programmets status i varje läge. Aktuellt kommando syns i inmatningsfältet och genom att knappen/menyalternativet markeras. För icke valbara kommandon tonas kommandoknapparna och menyalternativen ner så att man ser vilka kommandon som för närvarande är tillgängliga. Sättet på vilket koordinaterna tolkas visas hela tiden. Vi hoppas att det leder till färre misstag från användarens sida.

Implementationen i Visual C++ har varit enkel eftersom den gör att vi kan garantera fullständig överensstämmelse mellan menyalternativen och motsvarande knappar. Är en knapp nedtryckt är menyalternativet markerat med en liten bock (). När man inte ska kunna köra en viss funktion i ett visst läge saknar det betydelse om man försöker via knappen eller via menyn.

3.2 INMATNINGSRADEN

Inmatningsraden består av tre delar. Från vänster: tre koordinatknappar, fyra kommandoknappar och inmatningsfältet.


Figur 3:3 Inmatningsraden

Koordinatknapparna representerar tre olika sätt att tolka koordinater: som absoluta, relativa eller polära. (Se figur 3:4) I ett koordiantsystem med absoluta koordinater anger man positioner i förhållande till origo. Relativa och polära koordinater anges däremot i förhållande till den senast angivna punktens position. Koordinatknapparna ger användaren en möjlighet att när som helst byta koordinatsystem. Detta för att på enklast möjliga sätt mata in en punkt på en ritning. För mer avancerade användare är det möjligt att inför varje punkt ange koordinatsystem för de inmatade koordinaterna. Om man till exempel har angivit att man arbetar med relativa koordinater och vill ange att nästa koordinat kommer att vara på polär form skriver man "p(sträcka, vinkel)". RoofCon stöder även AutoCads konvention för koordinatinmatning.


Figur 3:4 Koordinatknapparna

Kommandoknapparna består av fyra knappar (från vänster i figur 3:5): Avbryt, Utför, Inställningar och Backa. Dessa knappar finns tillgängliga för alla kommandon även om de används i olika hög grad i kommandona.


Figur 3:5 Kommandoknapparna

Avbryt avslutar kommandot om det befinner sig i sitt första steg, annars startar den om kommandot och återgår till det första steget. Trycker man på ESCAPE-tangenten händer samma sak som vid klick på Avbryt. I AutoSketch åker man däremot direkt ut ur kommandot när man trycker ESCAPE. Om man gör någonting fel och trycker ESCAPE i AutoSketch så måste man åter välja kommandot och köra det. I RoofCon däremot är det då bara att börja om med kommandot.

Utför accepterar den inmatning som har skett, dess beteende kan jämföras med ENTER-tangentens. Om man vill köra samma kommando igen behöver man inte välja om det. Kommandot ligger kvar till dess man byter kommando eller avbryter det pågående med Avbryt eller ESCAPE. Detta är också en skillnad mot AutoSketch, där måste man välja kommandot varje gång man vill köra det. Ofta är det så att man vill använda samma kommando flera gånger i följd och då är det onödigt att behöva välja det varje gång.

Inställningar ger användaren en möjlighet att ändra det aktuella objektets egenskaper. Objektets egenskaper kan till exempel vara position, riktning, storlek och karaktäristiska mått med mera. För att komma åt inställningarna kan man alternativt använda ALT-ENTER. (Se vidare under rubriken 4.2.6 Tangentbordet)

Backa gör det möjligt att ångra en inmatning och gå tillbaka ett steg i kommandot. Detta kan vara praktiskt om man till exempel klickade med musen på fel punkt under ritande av en vägg. Backa kommer man också åt via ALT-BACKSPACE.

Användaren ser på kommandoknappen om den kan användas av ett kommando. Om den för tillfället inte kan användas tonas den ner och går inte att klicka på.

Inmatningsfältet är avsett för kommunikationen mellan kommandona och användaren. Det består av tre texter: en som talar om vilket/vilka kommandon som körs, samt en som talar om vad användaren ska göra samt en med eventuell inmatning från användaren. Vi har hämtat texten om kommandot från rullgardinsmenyn. Detta för att användaren endast skall behöva lära sig ett namn på funktionen. Den första texten och de efterföljande två skiljs åt genom olika färger. Även om man inte kan se skillnad på färger är det enkelt att veta vad som är vad. Det som står på raden är antingen kommandon, uppmaningar eller inmatning från användaren. Står det två kommandon på raden skiljs de åt av ett semikolon (;). Skillnaden mellan kommandot och uppmaningen utgörs av ett mellanrum. Inmatningen från användaren är kommer alltid sist i fältet.


Figur 3:6 Inmatningsfältet

Vi har försökt begränsa möjlighterna för användaren att ge felaktiga eller omöjliga indata till programmet eller kommandot. Om exempelvis användaren ska ange ett avstånd tillåter inte programmet andra tecken än siffror, komma och minustecken. De gånger programmet har standardvärden för en inmatning visas de i inmatningsfältet. Om standardvärdet gäller en punkt följer det växlingar av koordinatangivelser.

3.3 KNAPPARNA

För att det skall gå att välja funktioner snabbare än från menyerna och för att visa viss information för användarna har RoofCon två knapprader. Vi har namngivit knapparna enligt följande, övre raden från vänster:
Nytt, Öppna, Spara, Förhandsgranska, Skriv ut, Zooma hela, Zooma föregående, Markera objekt, Ångra, Gör Om, Visa stödlinjer, Stödlinje i punkt, Stödlinje parallell, Stödlinje mellan två punkter, Mät linje, Fäst mot ändpunkter, Fäst mot mittpunkter, Fäst mot skärningspunkter, Visa.

Andra raden från vänster:
Väggtyper, Takplansguide, Väggmakro, Rita vägg, Fortsätt vägg, Infoga vägg, Visa takytor, Takmakro, Rita tak, Visa takstolar, Takstolsmakrot, Rita takstol, Kopiera littra, Visa måttlinjer, Måttlinje.


Figur 3:7 RoofCons knappar

Knapparnas utseende har i möjligaste mån hämtats från andra program för att användaren ska känna igen så många som möjligt. Vi har tagit bilderna för Nytt, Öppna, Spara, Ångra, Gör om från Microsofts rekommendationer. Excel har bidragit med utseendet för Ok- och Avbryt-knapparna i inmatningsraden. (Se figur 3:5) AutoSketch har inspirerat knapparna för koordinatangivelserna och plockrutans beteende.

Knapparna är grupperade på verktygsraderna efter objekten som påverkas, det vill säga stödlinjekommandon är en grupp, väggkommandon en annan och så vidare.Gruppernas ordning på konstruktionsraden stämmer överens med ordningen på rullgardinsmenyerna. Ordningen på knapparna inom grupperna stämmer också överrens med ordningen i själva rullgardinsmenyerna. (Se figur 3:7, 3:8, 3:9) Ordningen i menyn och på Konstruktionsverktygsraden stämmer överrens med ordningen inom takplansguiden, det vill säga först väggar, sedan takytor och sist takstolar.


Figur 3:8 Ordningen på rullgardinsmenyerna


Figur 3:9 Ett exempel på ordningen i en rullgardinsmeny.

Programmet har en Visa-knapp som ger en dialog. I den kan användaren ställa in vilka objekt som ska synas på ritningen. Dessutom finns det knappar för vissa objekt som byter visningsläget direkt. För de grupper som har en Visa-knapp har vi konsekvent placerat den längst till vänster i gruppen. För att få fram knappens utseende har vi korsat symbolen för Visa-knappen, med symbolen för det aktuella objektet. Då visar vi släktskap både mellan Visa och objektet för att det skall vara enkelt att veta knappens betydelse. På samma sätt har vi gjort Rita vägg, Rita takstol och Rita tak. De har pennan gemensam, eftersom man ritar objekt med dessa funktioner. Vidare ser alla makron ut som ett ritblock med en bild av objektet, som makrot skapar. Guiden fungerar ungefär som några makron efter varandra som skapar ett hus. Följaktligen ser guiden ut som ett ritblock med många sidor i och ett färdigt hus.

3.4 DIALOGER

När man visar dialoger finns det alltid en risk att man skymmer information på skärmen som användaren vill se. Vi vill inte gissa vilken del av skärmen användaren vill se när vi visar dialogerna. Istället är vi konsekventa och lägger dem alltid i centrum av skärmen. Användaren kan naturligtvis flytta dialogerna om han/hon så önskar. Ett undantag från placeringsregeln är de få dialoger som skapats av en annan dialog, dessa har placerats så att de inte täcker hela föräldradialogen.

För att minska antalet dialoger har vi använt flikade dialoger (property dialogs, se figur 3:10) och grupperat den information som hör ihop till samma dialog. Ett klagomål på TrussCon har varit just mängden dialoger och svårigheterna att hitta information.


Figur 3:10 Exempel på flikad dialog, och text utan fet stil

En ny standard i Windows '95 är text utan fetstil i dialoger, något som vi har anammat fullt ut. Det ger mer utrymme för längre texter, dessutom ser det i vårt tycke bättre ut. För Öppna, Spara och Skriv ut har vi använt de standardiserade dialoger som följer med Microsoft Windows och som användaren känner igen från andra program. I övrigt har vi följt de rekommendationer som Microsoft har givit när det gäller exempelvis storleken på knappar och avstånd mellan olika dialogkontroller. [1]

3.5 MENYN

I Microsofts nya riktlinjer för användargränssnitt finns det en rekommendation för när man skall lägga tre punkter efter texten i vissa menyalternativ. Denna rekommendation säger att man endast skall lägga till de tre punkterna när användaren måste tillföra information. Vi tyckte att detta kändes tveksamt och valde som princip att de alternativ som direkt ger upphov till en dialog ska följas av tre punkter. Det var den standard som gällde för Microsoft Windows 3.x.


Figur 3:11 Exempel på tre efterföljande punkter för menyalternativ

När det gäller tangentkombinationer är vi inte särskilt konsekventa. För menyn har vi valt standardiserade kombinationer för filhanteringen (Nytt, Öppna, Spara, Skriv ut) och Ångra. Under pågående kommando finns det möjlighet att komma åt kommandoknapparna från tangentbordet. Avbryt hör naturligt ihop med ESCAPE och Ok lika naturligt ihop med ENTER. Egenskaper finns redan i Windows som ALT-ENTER. Vi har valt att fortsätta utnyttja ALT-tangenten för andra funktioner relaterade till kommandona. Backa blir då naturligt ALT-BACKSPACE, som var den förra tangentkombinationen för Ångra i Windows. Även senaste punkt passar in här. ALT-musklick ändrar senaste punkt när som helst under körning av programmet.

Menyerna i prototypen är grunda, det vill säga att det finns inga undermenyer till rullgardinsmenyerna. Hittills har vi kunnat lägga in det vi velat i menyerna utan att de blivit för långa för att visas på skärmen. Vi har fortfarande plats att lägga till fler rullgardinsmenyer vid sidan om de befintliga. Motiveringen till varför vi vill hålla menyerna grunda är att det då går snabbare att hitta bland alternativen i dem.[2]


Figur 3:12 Exempel på undermeny ur Microsoft Excel 5.0

3.6 ÖVRIGT

Andra saker som underlättar för användaren: "Tooltips", det vill säga den temporära text som visas när man håller musmarkören stilla en viss tid över en knapp, gör det enkelt att ta reda på vad en knapp används till. (Se figur 3:13) Texten i pratbubblan är samma som står i rullgardinsmenyn för den funktionen. Tillsammans med en mer utförlig text i statusraden bör det vara relativt enkelt för användaren att ta reda på knapparnas funktion.



Figur 3:13 Exempel på "Tooltips" och tillhörande text i statusraden

Användaren har full frihet att välja vad som ska visas i fönstret. Med många stödlinjer, takstolar och dylikt blir det lätt svåröverskådligt. De viktigaste objekten har en egen snabbknapp för att slå av och på visningen av dem. Detta gör det enkelt att välja bort det som bara är i vägen.

Vid inmatning av en punkt visas var den hamnade genom att senaste punkt och dess kryss uppdateras. Detta är speciellt viktigt då användandet av plockrutan gör att användaren inte kan vara helt säker på var punkten hamnar.

När kommandona kan ta emot en hel serie punkter krävs att användaren ser vilka han har matat in. Det sker på två sätt; antingen ritas linjer mellan punkterna (till exempel Rita vägg, se figur 3:14) eller så markeras punkterna var för sig (till exempel Måttlinjer).


Figur 3:14 Exempel på linje mellan ritade punkter

Där det har varit befogat har vi använt oss av animering i kommandona, det vill säga att i realtid rita en figur som följer markörens rörelse, för att visa användaren vad resultatet kommer att bli. I till exempel måttlinje-kommandot är det nödvändigt för att användaren ska kunna placera måttlinjen där han vill ha den. (Se figur 3:15)


Figur 3:15 Exempel på animerat ritande, positionering av måttlinje

För att lättare kunna markera och arbeta med vissa objekt så har de fått en symbol som underlättar hanteringen. Det kan till exempel vara takstolarna som har en liten triangel som visar vad som är framsidan på takstolen. (Se figur 3:16) Man kan välja takstolen genom att klicka på triangeln, men man kan inte sätta en måttlinje mot triangeln. Triangeln är bara en symbol och inte ett objekt.


Figur 3:16 Exempel på underlättande symboler

4 METODEN

Här följer en beskrivning av själva metoden, eller arbetsgången för att rita och konstruera takplan i RoofCon. Vi börjar med hur vi kom fram till metoden, sedan beskriver vi lite om metoden som gäller i hela programmet. Sist beskriver vi metoden för enskilda funktioner.

4.1 FRAMTAGANDE AV METODEN

Från början var vi ganska vilsekomna när det gällde tak och takstolar över huvud taget. Inledningsvis diskuterade vi med Mats Johansson och Urban Lindberg för att få fram ett utkast till en första arbetsgång i RoofCon. Vi utgick ifrån ett önskemål från en av Consultecs kunder i Danmark. De önskade sig ett program i vilket de kunde skapa takstolar för valmavslut på hus på ett rationellt och enkelt sätt. I dag ritar och konstruerar de takstolarna var för sig med en låg grad av återanvändning. Vi tittade lite på andra program som används för CAD-ritande såsom HusPartner, AutoCad och AutoSketch för att se hur de löst vissa problem.

Vi bad Arkitekter och Konstruktörer AB att de skulle visa oss hur de skulle göra en ritning, som vi hade utarbetat förutsättningarna för. (Se figur 4:1) De utsåg Magnus Hellgren att stå för visningen. Magnus använde sig av AutoCad version 12 vid visningstillfället. Under visningen såg vi sådant som var bra och sådant som var mindre bra. En sak vi direkt tog fasta på var användandet av stödlinjer, som vi ville ha både snabbt och enkelt. Vi gillade däremot inte att Magnus var tvungen att hela tiden ange om det var absoluta, relativa eller polära koordinater på siffrorna som han matade in. Han angav skillnaden med tecken så som "@" och "<". Vi bad också Magnus att titta på vårt förslag till arbetsgång. Vi fick då in vissa synpunkter, men mest av allt fick vi lära oss hur man ritar hus.


Figur 4:1 Förutsättningarna för Arkitekter och Konstruktörer AB

Vi har vid ett antal tillfällen haft god hjälp av Byggteknik AB för att få svar på frågor samt synpunkter på programmet. I projektets slutskede skulle Byggteknik göra ett utskick till ett urval av deras kunder. Då passade vi på att skicka med en demonstration av RoofCon och en enkät med frågor. Vi hann emellertid inte få in så många svar innan projektet skulle vara avslutat. De enkätsvar vi fick in gav oss några värdefulla synpunkter på programmet. En del av enkäten bestod i att de svarande fick prioritera programmets uppförande och utdatan från programmet. Vi fick in en hel del önskemål om ytterligare former på huskroppar i makrona, vissa kanske mindre realistiska än andra. Vi fick också önskemål om att kunna koppla ihop RoofCon med många andra program på marknaden, men vi får se hur det blir med den saken. Tillsammans med vissa enkätsvar fick vi in ritningar på hus som de svarande hoppades att programmet skulle klara av. Delar av resultaten från enkäten finns redovisade i diagramform i bilaga 2.

För att få in ytterligare idéer och tips på hur vi skulle göra funktioner och stöd till användaren så har spionaget på andra program varit tämligen omfattande. Vi har haft möjlighet att titta på AutoCad, AutoSketch, HusPartner, Excel, TrussCon, Visual C++ och Word med flera. De program som vi tittat mest på har varit AutoSketch och TrussCon. I och med att Consultec gjort TrussCon och att det kommer att bli TrussCon som skall användas för dimensioneringen av takstolarna så har vi varit tvungna att ta hänsyn till TrussCons gränssnitt.

4.2 METODEN, ALLMÄNT

Här tar vi upp några delar av metoden som är av allmän karaktär, det vill säga sådant som gäller i hela programmet. Vi har också ett stycke med beskrivningar av vissa kompromisser.

4.2.1 Färgerna

Vi har försökt använda färger för att förtydliga och förenkla gränssnittet. Vi hoppas att man skall kunna köra programmet även om man har defekt färgseende. Vi har inte blandat rött och grönt, eftersom 10% av den manliga befolkningen har svårt att se skillnad på dessa färger om de ligger nära varandra.[4] Vi har undvikit att användaren skall behöva se skillnad på olika nyanser eller färger för att kunna avgöra statusen på objekt. Till exempel har vi, för att skilja på markerade objekt och inte markerade objekt, streckat de markerade objekten. Ett alternativ här hade varit att använda olika nyanser av samma färg, men detta hade kunnat leda till problem.

4.2.2 Dialogerna

I dialoger som kan gälla ett eller flera objekt beroende på antalet som är markerade, har vi valt att visa avvikande information med hjälp av tomma inmatningsrutor. (Se figur 4:2) Om man har markerat några objekt och minst ett av dem har mått som avviker från de andra så visas de avvikande måtten som tomma rutor, medan det är siffror i de andra. Användaren kan fritt ändra i alla rutor. Ändrar inte användaren i de tomma rutorna ändras inte de ingående objektens värden. Detta följer Microsoft Windows '95:s standard och det känns också rätt. Vi har dock inte kommit på något bättre sätt att visa dessa avvikelser. Ett dåligt alternativ hade varit att inte tillåta samtidig ändring av flera objekt. Detta skulle leda till mycket mera arbete för användaren, eftersom han/hon då måste ändra alla objekten var för sig.


Figur 4:2, Exempel på tomma inmatningsrutor

4.2.3 Noggrannhet

Alla mått i RoofCon anges i millimeter men när man bygger hus är det sällan man behöver större noggrannhet än millimetrar. Vi anser det därför inte relevant att visa mer än två decimaler i dialogernas textrutor. För vissa uträknade resultat har vi betydligt mer än två decimaler. För att vi inte skall få avrundningsfel behåller vi alla decimaler i minnet även om vi bara visar två. Om användaren inte ändrar innehållet i en textruta behålls värdet med fullt antal decimaler. Ändrar användaren talet gäller det inmatade värdet.

4.2.4 Bilder

I bland kan det vara mycket svårt att i ord förklara vad man menar i dialoger man visar för användaren. Vi har i de fallen lagt in bilder för att illustrera det som vi är ute efter. Vi har varit restriktiva med att använda bilder, för att detta inte skall bli ett självändamål.

I figur 4:3, nedan, visas dialogen för att definiera en väggtyp. Bilden i mitten föreställer en vägg där man skall ange måtten för väggen. Bilden kan te sig lite svår att förstå för den oinvigde, men ingen av konstruktörerna som vi visat bilden för har tvekat om vad den föreställer. Att beskriva den figuren i ord kräver en hel del utrymme för förklaringar. Här vann vi en hel del på att använda bilden. Vi har använt bilder på väggen vid flera tillfällen bland annat för att användaren skall tala om vad som han/hon använder som referenslinje. Dessa bilder liknar bilden i figur 4:3. Vi använder oss av bilder som liknar varandra för att användaren lättare skall känna igen sig och förstå vad vi menar. Jämför bilden i figur 4:3 med bilden i figur 4:4.


Figur 4:3 Exempel på bildanvändning


Figur 4:4 Bild för referenslinje och utbredningsriktning

4.2.5 Kompromisser

När det gäller arbetsmetoderna i programmet har vi varit tvungna att göra några olika kompromisser. Vi har siktat på att gränssnittet skall vara helt objektorienterat. Ibland har det känts så att vi vill ha någon specialiserad funktion för en typ av objekt. Då har vi varit tvungna att kompromissa eventuell vunnen snabbhet eller enkelhet med att lämna det alltigenom objektorienterade gränssnittet. Vi hade ett tag funderingar på att ha en speciell funktion Flytta måttlinje, eftersom vi trodde att det fanns risk att man skulle vilja flytta ett stort antal måttlinjer efter varandra och då skulle det objektorienterade tänkandet generera mera arbete för användaren. Vi kullkastade planerna och idag ser vi inte behovet av funktionen.

Vi har däremot tre funktioner som verkar direkt på objekt. De är: Fortsätt vägg, Infoga vägg och Kopiera littra. När vi skapade dessa var det enkelheten att komma åt deras funktionaliteter och det faktum att vi snabbt ville visa tanken bakom dem som gjorde att de blev särskilda funktioner. Den objektorienterade lösningen vore att alla objekt fick Infoga och Kopiera funktionalitet. Fortsätt funktionaliteten är egentligen bara ett specialfall av Infoga, varför man skulle klara sig bra utan den. Infoga vägg och Kopiera littra som egna funktioner kommer snart att försvinna. Infoga och Kopiera funktionerna kommer att implementeras för alla objekt, då kommer gränssnittet i RoofCon åter att vara helt objektorienterat.

Stödlinjekommandona har vi gjort lättillgängliga för att det skall vara enkelt och snabbt att ta fram stödlinjer. I dessa kommandon har vi lagt en del extra finesser. Dessa hade vi kunnat ha som skilda funktioner, men det hade dragit ned snabbheten vid användandet av kommandona. Användarna hade tvingats att byta kommandon ofta, det hade blivit många funktioner med liten skillnad att hålla reda på. Priset som vi får betala är att de som använder programmet sällan inte kommer att ha nytta av den extra funktionaliteten, eftersom de kommer att glömma finesserna mellan användningarna av programmet. Dessa användare kommer nästan uteslutande att köra funktionerna såsom kommandoraden uppmanar dem. För en beskrivning av kommandona se vidare under rubriken 4.3.7 Stödlinjer.

4.2.6 Tangentbordet

Vi har försökt undvika användningen av tangentkombinationer som människan inte är skapad för. För att följa Windows standard har vi dock varit tvungna att använda två stycken tvåhandskombinationer. Dessa är ALT-BACKSPACE för ångra/backa och ALT-ENTER för att komma åt ett objekts egenskaper. Panoreringen av skärmen sker med hjälp av piltangenterna eller med hjälp av rullningslisterna.

4.2.7 Musen

Vänstra musknappen används i RoofCon precis som i alla andra program i Windows. Högra musknappen har däremot flera funktioner. Trycker man ner den högra musknappen och håller den nere samt drar musen åt något håll zoomar man in området i rutan. Detta är en sak som vi hämtat från TrussCon. Zoomen på högra musknappen är någonting som användarna av TrussCon är mycket nöjda med, så vi tyckte inte att vi skulle ändra på det. Både i AutoCad och AutoSketch måste man välja speciella funktioner för att kunna zooma och det blir lite jobbigt om man måste zooma ofta.

Ett enkelklick på musens högra knapp medför att en snabbmeny visar sig. Användaren är inte tvungen att hålla musen helt stilla under klicket. Vi har lite säkerhetsmarginal för att det skall vara möjligt att få fram snabbmenyn och inte alltid zooma in. Är man i närheten av ett objekt och klickar med högra musknappen får man upp en snabbmeny med funktioner som man kan använda på just det objektet. Klickar man med musen utan att vara nära något objekt så visas en snabbmeny med programinställningar.

Det vanligaste i Windows-världen är att användarna har en mus med två knappar. För de användare som har en mus med tre knappar tolkar RoofCon den mittersta på samma sätt som om användaren tryckte på ENTER.

4.3 METODEN, EN BESKRIVNING

Nedan beskrivs metoden och arbetssättet för vissa funktioner och vissa delar av programmet.

4.3.1 Objektorienterat användargränssnitt

Vi har siktat mot att göra gränssnittet i RoofCon så objektorienterat som möjligt. Ett objektorienterat gränssnitt tål nog att förklaras ytterligare. Med ett objektorienterat gränssnitt menar vi ett gränssnitt där man först väljer på vilket objekt man vill applicera en funktion. Sedan väljer man den funktion man vill använda av de funktioner som är tillgängliga för just det objektet. Motsatsen är att man väljer en funktion som fungerar på en viss typ av objekt och därefter väljer ett objekt av den typen.

I en objektorienterad variant av funktionen Flytta väljer man först vilka objekt man vill flytta. Sedan väljer man funktionen Flytta och då kan man flytta de valda objekten. I den icke objektorienterade varianten väljer man funktionen Flytta måttlinje och då kan man bara flytta måttlinjer. Följden blir att man har en massa funktioner som egentligen utför samma sak men på olika objekt. I TrussCon finns bland annat Flytta knutpunkt, Flytta mellanbjälke, Flytta måttlinje och så vidare, det vill säga en funktion per objekt.

Fördelen med ett objektorienterat gränssnitt blir att användaren får ett överskådligt antal funktioner att använda och hålla isär. Lär sig användaren att flytta en typ av objekt så kan användaren flytta alla objekt.

I RoofCon väljer man de objekt som man vill förändra och därefter anger man hur man vill förändra dem. Är något eller några av de markerade objekten av avvikande typ och funktionen inte fungerar på samma sätt för alla de ingående objekten får användaren välja på vilken typ av objekt han/hon vill köra funktionen. Då funktionen avslutats försvinner markeringen på de valda objekten. Det verkar som man oftast bara vill manipulera en typ av objekt åt gången och då känns det som ett extra moment att vara tvungen att avmarkera en del objekt innan man kan markera nya för nästa funktion. De funktioner som fungerar på det här viset är samtliga redigeringsfunktioner, bland andra Flytta och Ta bort.

4.3.2 Fäst mot

Här kommer en innovation hämtad från andra program, nämligen möjligheten att "klicka just bredvid men ändå träffa". Användaren har en möjlighet att välja vilka delar av objekten som skall fungera inom en plockruta ("träffområde") kring musmarkören. De valbara delarna är ändpunkter, mittpunkter och skärningspunkter. Detta är gjort för att användaren skall kunna använda musen på ett snabbt och rationellt sätt, det vill säga att användaren inte behöver träffa precis på rätt koordinat utan det räcker med att vara tillräckligt nära. Hur nära användaren måste vara beror på hur stor plockruta som ställts in.

4.3.3 Plockruta

Plockrutan är storleken på "träffområdet" inom vilken "Fäst mot" fungerar. Användaren kan själv ställa in storleken på rutan i procent av fönstrets höjd. Det är gjort för att inte plockrutans storlek skall påverkas av inzoomningsfaktorn.

4.3.4 Senaste punkt

Senaste punkt kallar vi den senaste punkten som användaren matade in. Denna punkt visar vi med ett rött kryss, detta för att det skall vara enkelt att se var punkten hamnade. Koordinaterna för senaste punkt visas hela tiden i statusraden. Då man anger punkter med polära eller relativa koordinater utgår de ifrån senaste punkt. Senaste punkt är även bra om man vill göra ett kommandobyte och fortsätta med nästa funktion där man var nyss. Man kan flytta senaste punkt, utan att man behöver köra ett kommando, genom att hålla nere ALT- tangenten samtidigt som man klickar med musen. Detta kan vara lämpligt om man vill ange ett mått relativt en annan punkt än den nuvarande punkten.

4.3.5 Nytt dokument

I TrussCon lagrar man projekten i en och samma katalog på hårddisken eller nätverket. Efter en tids användande består den katalogen av en massa filer, en för varje takstol. Det tyckte vi inte verkade bra så i RoofCon skapas en ny katalog för varje nytt projekt. I den katalogen får sedan alla filer som hör till det projektet ligga. Vi hoppas då att det dels skall vara enklare att hitta bland projekten, men även att det skall vara enklare att hitta och komma åt takstolstyper från andra projekt utan att namngivningen krockar. Längden på projektnamnen får maximalt vara åtta tecken på grund av begränsningar i operativsystemet. Katalognamnet förväljs till projektnamnet, men användaren kan ändra katalognamnet om han/hon så önskar.

4.3.6 Uppdelning mellan bas- och tilläggskommandon

Samtliga kommandon är uppdelade mellan baskommandon och tilläggskommandon. Den här uppdelningen har kommit sig av att vi har en kommandostack med maximalt två samtidiga kommandon, ett baskommando och ett tilläggskommando. Detta har vi gjort för att det finns tillfällen då man under pågående kommando behöver köra ett annat kommando för att sedan fortsätta med det gamla.

Det kan till exempel vara så att man först under ritandet av väggen kan sätta ut vissa stödlinjer, så att man kommer sig runt hela huset med ritandet. Under tiden som man kör ett baskommando och håller på med ett tilläggskommando kan man inte välja att köra ett nytt baskommando. Man kan däremot byta tilläggskommando genom att välja ett nytt tilläggskommando. Vill man åter köra det pågående baskommandot trycker man på ESCAPE eller klickar på Avbryt-knappen i inmatningsraden.

Ett kommando är antingen ett baskommando eller ett tilläggskommando. Stödlinjekommandona är mycket bra exempel på tilläggskommandon därför att de gör enkla uppgifter som kan vara till hjälp för många kommandon. Då man väljer mellan de olika stödlinjekommandona byts de bara ut, medan baskommandona alltjämt ligger kvar.

4.3.7 Stödlinjer

Stödlinjer var en bra sak som fanns i några av de program vi tittade på. Dessa linjer sätter man ut från givna punkter med olika vinklar för att man skall slippa att manuellt räkna fram koordinater för till exempel husets hörn. Vi har satsat på att ha flera typer och att de skall vara lättillgängliga och snabba att använda. Vi har tre sorters stödlinjer för olika behov och tillfällen. Dessa är:
  • Stödlinje i punkt. Den här använder man när man vet vart en punkt ligger och vinkeln på linjen. Alternativt kan man använda den när man vill att linjen skall gå genom två kända punkter.

  • Stödlinje parallell. Den använder man när man har en vägg eller en annan stödlinje och vet ett parallellt avstånd till den nya väggen eller en punkt att lägga en ny stödlinje i.

  • Stödlinje mellan två punkter. Den här använder man när man vill ha en linje eller punkt mitt emellan två befintliga punkter.

    I funktionen stödlinje i punkt, har vi gjort så att man kan mata in koordinater och vinkeln på linjen. Man kan också klicka in punkten och sedan trycka ENTER eller dubbelklicka med musen för att bekräfta senast angivna vinkel. Ytterligare ett alternativ är att klicka på två punkter för att få en linje mellan dem.

    Funktionen Stödlinje parallell kan också användas på flera olika sätt. Första klicket är för att välja vilken linje som den skall vara parallell mot, en pil indikerar riktningen och sedan skall man ange avståndet. Trycker man två gånger på ENTER bekräftar man valet av sida, annars anmodas man att välja den sida om linjen som den nya linjen skall komma. Valet av sida gör man genom att klicka på öskad sida om linjen. Om man sedan önskar ha flera linjer med samma avstånd dubbelklickar man på rätt sida om linjen som man vill att stödlinjen skall vara parallell mot.

    4.3.8 Väggarkivet

    Det här är resultatet av en synpunkt från Byggteknik som vi anser vara mycket vettig. Olika tillverkare av hus har olika mått och uppbyggnad av väggarna. Användarna är därför fria att lägga upp data för vilka väggtyper som helst. Uppbyggnaden av väggarna kan också skilja mellan olika typer av hus hos samma tillverkare. För att hantera det på ett enkelt och smidigt sätt grupperar vi väggtyper i olika arkiv. Då kan användaren ange att han/hon bara vill utnyttja de väggtyper som finns för det hus eller den tillverkare som användaren håller på med just nu. När användaren sedan byter hustyp eller tillverkare så får han/hon välja det arkiv som passar för den nya typen.

    4.3.9 Rita vägg

    Det här är det fria och det mest flexibla sättet att skapa en vägg. Vi tänker på väggen som en kedja av väggelement. Ritandet går till så att man antingen klickar in punkter eller anger koordinater för de olika hörnen. En linje ritas ut som markerar var på skärmen som referenslinjen på väggen kommer att gå. När man kommer till startpunkten igen eller när användaren anger att väggen är klar, genom att dubbelklicka eller trycka ENTER, ritas väggen så som den kommer att se ut.

    4.3.10 Takytorna

    Metoden för att skapa takytorna är mycket lik den för väggarna, men med en skillnad. För att användaren skall slippa göra komplicerade beräkningar om höjden av takytan på flera olika ställen så försöker programmet räkna ut höjden och taklutningen. Användaren får därefter bekräfta eller överstyra programmets beräkningar. Att bara låta användaren passivt bekräfta det som programmet föreslår är inte helt lyckat, eftersom vi då löper risk att användaren accepterar vad som helst utan att tänka efter [3]. Det är därför nödvändigt att programmet alltid räknar rätt, men det går inte i alla lägen. Klarar programmet inte att göra en kvalificerad gissning så gissar inte programmet alls utan överlåter problemet helt till användaren. Ibland kan programmet göra i och för sig helt korrekta gissningar, men ändå inte som användaren vill. Det kan till exempel röra sig om tillfällen då användaren vill ha flera takytor rakt ovanför varandra. För att det då skall bli rätt måste användaren själv ange rätt höjd.

    4.3.11 Makrofunktioner

    Vi har tagit fram tre stycken makron för att det skall vara enkelt och snabbt för användarna att utföra saker av mer rutinkaraktär. Dessa tre är: väggmakrot, takmakrot och takstolsmakrot.

    I väggmakrot får användaren först välja vilken form huskroppen skall ha, och sedan ange några olika mått som är karaktäristiska för just den huskroppen. Användaren får därefter ange rotationsvinkeln för huskroppen samt dess position. Vi har definierat fyra olika former på huskroppar, men av enkätsvaren att döma finns det önskemål om betydligt fler. Användaren kan använda dessa makron som en bra start även om makrots form inte är helt perfekt för användarens behov. Det är relativt enkelt att sedan modifiera huskroppen som makrot genererade så att det passar användarens behov.

    I makrot för takytor, liksom i ovanstående makro, får användaren först välja formen på huskroppen och takytornas form. Därefter ange vissa karaktäristiska mått. Sedan utför makrot ritandet av själva takytorna och användaren anger en referenspunkt för höjden (det vill säga en punkt i vilken man känner höjden) och höjden i referenspunkten.

    Takstolsmakrot skapar takstolar till en given takyta. I det här makrot får användaren först ange vilken takyta som det skall placeras takstolar på. Sedan får användaren välja vilken takstolslösning som han/hon vill ha samt ange några karaktäristiska mått för den lösningen.

    4.3.12 Guiden

    Många program av idag har lagt in guider där användaren steg för steg styrs mot ett mål. Ett bra och välkänt exempel på en guide är "Diagramguiden" i Microsoft Excel. Vi har lagt in en guide för att det skall vara enkelt att skapa en fullständig planritning för enkla huskroppar. Det enda som guiden gör är att den kör dialogerna till makrona för väggar, takytor och takstolar efter varandra. Efter dialogvisningen med inmatning av parametrar så positioneras huskroppen på ritningen. Resultatet från guiden kan sedan modifieras fritt så att det passar användarens önskemål. Då ingen av guidens lösningar är i närheten av det användaren vill göra kan han/hon givetvis konstruera planritningen utan guiden.

    4.3.13 Beskrivning av skapande av ett projekt

    Man startar programmet och väljer att man vill skapa ett nytt projekt. Sedan beror det på om huset passar att köra som makro eller guide. Om det inte går att köra som makro eller guide kan man börja med att lägga ut stödlinjer för väggens form så långt det är möjligt. Sedan börjar man med kommandot Rita vägg. Behöver man fler stödlinjer skapar man dem efter hand som man bygger väggen. När väggen är klar lägger man ut stödlinjer för takytorna och ritar takytorna. Sedan placerar man ut takstolarna. Hit kommer vi i RoofCon av idag. I framtiden kommer man att dimensionera takstolarna i TrussCon.

    5 TEKNIK

    Vid ett så här stort projekt är det ofrånkomligt att man lyckas göra lösningar som man anser vara särskilt lyckade och som användare av programmet inte kommer att tänka på när de kör programmet. Här redovisar vi några av de lösningar som vi anser vara mest lyckade i RoofCon.

    5.1 Associativ måttsättning

    I RoofCon tillämpar vi associativ måttsättning, det vill säga att varje måttpunkt hör ihop med ett objekt. Flyttar vi objektet, ändrar sig måttet direkt. Mäter man mot en skärning mellan två objekt, hänger måttet med även om man bara flyttar det ena objektet så att skärningen flyttas.

    I AutoSketch är måttsättningen associerad med en punkt på ritningen. Det innebär att flyttar man alla objekt inom ett visst område och måttlinjen inte är inom området så stannar den kvar och måttet ändras inte.

    TrussCon har liksom RoofCon associativ måttsättning. I TrussCon har man löst det på ett annat sätt. Man får där bara välja mellan ett antal olika punkter som man kan mäta mellan och dessa punkter har programmerarna definierat. Programmerarna i TrussCon har ständigt problem med att användare vill mäta mellan fler och fler punkter som de då måste lägga in i koden.

    5.2 Punktbufferten

    Vi har lagt upp en snabblista med alla objekt som för tillfället syns på skärmen, det är i den listan som vi söker när vi plockar mittpunkter, skärningspunkter också vidare. Vi använder också punktbufferten för att bestämma det största omslutande området av ritningen. Att implementera punktbufferten var en mycket lyckad satsning.

    5.3 Ångra/gör om

    Alla program av klass tillhandahåller Ångra och Gör om funktionalitet. Som vi såg det hade vi två vägar att gå. Den ena var att alla kommandon och funktioner skulle kunna återställa verkan av sig själva. Denna lösning är helt klart den snyggaste, men den verkar vara både svår att implementera och kunna ge upphov till en del merarbete med att hålla dessa funktioner ajour hela tiden. Vi bestämde oss i stället för att spara delar av projektet som filer i minnet innan vissa kommandon där Ångra kan tänkas uppskattas. Den här idén hittade vi i TrussCon, men där sparar de på hårddisken, vilket inte är lika snabbt som att spara i internminnet. Användaren kan själv reglera i hur många steg som han/hon vill kunna ångra. Vill en användare kunna ångra i väldigt många steg kan internminnet bli fullt och då måste vi likafullt spara på hårddisken och programmet upplevs som långsammare.

    5.4 Översättningar

    Vi visste redan från början att om prototypen skulle användas som bas för ett riktigt program måste den vara enkel att översätta. Vi har därför inga texter inne i koden, utan de finns i en separat fil vid sidan om. Texterna i den filen är grupperade så att texter som hör ihop ligger i en egen grupp. Detta för att underlätta för översättaren att förstå sambandet. Den här textfilen kompileras upp separat utan att hela programmet behöver kompileras om. Det här resulterar i sin tur i att man kan ha samma program med flera olika språk. Man kan då byta språk under pågående körning under förutsättning att man har tillgång till de olika språkfilerna. Idéerna till detta är hämtade från TrussCon.

    5.5 Riktlinjer

    För att de som programmerar i samma projekt ska skriva liknande kod har vi satt upp en del riktlinjer för projekt som utvecklas i Visual C++ på Consultec. Intentionen med de riktlinjer vi tagit fram har inte varit att de ska vara heltäckande, men de ska i alla fall vara en god början. Vi hade liknande riktlinjer från DDS att titta på. Dessa var mycket omfattande men vi tyckte inte om dem i alla delar. Vi tittade också på Hungarian notation, som också är ett slags riktlinjer, men inte heller de passade oss perfekt. Vi plockade bitar ur Hungarian notation och DDS samt passade ihop det till något som passade oss. De resulterande riktlinjerna finns i bilaga 1.

    6 SLUTSATSER

    Målet var att ta fram ett objektorienterat grafiskt gränssnitt och en metod att konstruera takplan. Gränssnittet skulle fungera rationellt både för de som inte använder programmet så ofta och för proffs. Målet anser vi oss ha uppfyllt då vi tagit fram en metod och ett väl fungerande objektorienterat grafiskt gränssnitt. Vi har inte åstadkommit ett program färdigt för distribution, men det var inte heller avsikten med examensarbetet. En stadig grund är i alla fall lagd för att Consultec skall ha en möjlighet att vidareutveckla prototypen RoofCon till det färdiga programmet RoofCon. Consultec avser också att färdigställa och distribuera programmet. Vi hoppas att vi inte har gjort en implementering som kan medföra att Consultec måste skriva om mycket stora delar av programmet för att vi vi på någon punkt valt en dålig lösning.

    I framtiden kommer fler val i de befintliga makrona. En funktion för att rita linjer som inte är objekt i vanlig mening står på önskelistan över saker att implementera. Vi vill också se en möjlighet att sätta ut helt fria texter på ritningen. Med de två sistnämnda funktionerna slipper användarna några av de begränsningar som trots allt kommer att finnas i RoofCon. Vidare måste RoofCon att kopplas ihop med till TrussCon för att dimensioneringen av takstolarna skall ske på ett korrekt sätt. RoofCon kommer att kunna presentera en samkörd kaplista och en samkörd kalkyl för hela takplanet. I framtiden kommer RoofCon också att kunna plocka in hela eller delar av ritningar från andra program genom en DXF-koppling.(Drawing Interchange Format). RoofCon kan redan nu exportera ritningar på DXF-format så att man kan ta in RoofCon-ritningar i exempelvis AutoCad för vidare behandling.

    7 REFERENSER

    1 The Windows Interface Guidelines for Software Design, Microsoft Press, ISBN 1-55615-679-0

    2 Löwgren J,1993 Human-computer interaction, Studentlitteratur, ISBN 91-44-39651-1

    3 Wickens C D.,1992 Engineering psychology and human performance, HarperCollins Publishers, ISBN 0-673-46161-0, 40-58

    4 Shinobu Ishihara,1980,Ishiharas tests for Colour-blindness, Kanehara & co. ltd. Tokyo





    Senast ändrad 1996-06-19 av
    Andreas Nilsson
    . . . . . . . . . . . . . . . . . . . . .