TNO-Bouw. Irw 1

Maat: px
Weergave met pagina beginnen:

Download "TNO-Bouw. Irw 1"

Transcriptie

1 TNO-Bouw Irw 1 y

2 1 1 * TNO-Bouw Lange Kleiweg 5, Rijswijk Postbus AA Delft Telex Fax Tetoon TNO-rapport R(iTS bibio±k FIS LO CAD NEUTRALE LEAFO EDITOR locatic Postbus 2b6Ô 3502 LA Utrecht november 1992 Aan: Rijkswaterstaat Bouwspeurwerk Contract: BDP Postbus LA Utrecht BIBLiOTHEEK EOU\,C/UENST HIJKSWATERSTAAi1 NR.Z&2t& c Alle rechten voorbehouden. Niets uit deze uitgave mag worden vermenigvuldigd en/of openbaar gemaakt Projectnaarn : PDI Viaduct Cluster C door middel van druk, fotokopie, microfilm of op welke andere wijze dan ook, zonder PlOjectfluffln3er : voorafgaande toestemming van TNO Auteur (s) : ir. P. Kuiper ing. M.R. Boender Indien dit rapport in opdracht werd uitgebracht, wordt voor de rechten en drs. B.F.M. Luijten verplichtingen van opdrachtgever en opdrachtnemer verwezen naar de 'Algemene Voorwaarden voor Onderzoeks- Pagina's : 112 opdrachten aan TNO', dan wel de Bijlagen : 6 betreffende terzake tussen partijen Figuren : gesloten overeen komst. 32 Het ter inzage geven van het TNO-rapport Tabellen aan direct belanghebbenden is toegestaan. TNO Thema : Productmodelleren WP-subject Trefwoorden : LEAFO editor, LEAFO Nederlandse organisatie voor toegepaat-natuurwetenschappeliik onderzoek TNO-Bouw verricht onderzoek en geeft advies over bouwvraagstukken, voornamelijk in opdracht van onder meer cie overheid grote en kleine ondernemingen in de bouw. toeleveringsbedrijven en branche-instellingen abol-!jq

3 B november 1992 VOORWOORD 4 Aanpak en werkwijze 5 1 INLEIDING 6 2 DE CAD NEUTRALE LEAFO EDITOR Het definiëren en gebruiken van LEAFO definities De neutrale CAD interface Geometrische entiteiten Procedurele structuren Data types Lists/Arrays Structures Operatoren Expressies ControiFlow Functies/Procedures LEAFO specifieke functionaliteiten 13 3 IMPLEMENTATIE CAD NEUTRALE LEAFO EDITOR De opzet van de cad neutrale LEAFO editor De neutrale LEAFO editor als domein in pmshell Een diagram techniek voor de neutrale LEAFO editor LEAFOBJECT LIBRARY GEOMETRY STATEMENT ITERATION CONDITION FORMAL ACTUAL VARIABLE POSITION ORIENTATION 24

4 B november DEFINIITIESTUDIE DAMWAND CONSTRUCTIE Afbakening Definitie studie Benamingen Damwand decompositie NIAM definitie LEAFOparameters Het LEAFO algorithme 33 5 IMPLEMENTATIE LEAFO VOOR DAMWAND CONSTRUCTIE 35 6 INSTANTIATIE LEAFO VOOR DAMWAND CONSTRUCTIE 39 7 VERDERE UITWERKING VAN DE CAD NEUTRALE LEAFO EDITOR leafo's ontwikkelen LEAFO administratie Generieke formulieren Grafische terugkoppeling Meerdere representatie vormen LEAFO's gebruiken Automatische shell generatie Het gebruik van standaard komponenten bibliotheken 47 8 CONCLUSIES EN AANBEVELINGEN Conclusies Aanbevelingen 49 LITERATUUR 51 BIJLAGE A NEUTRALE INTERFACE CALLS DIMENSION III 52 BIJLAGE B ONTWIKKELING GENERIEKE FORMULIEREN 60 BIJLAGE C EXPRESS SCHEMA VAN HET LEAFO DOMEIN 68

5 B november BIJLAGE D DOCUMENTATIE VAN HET LEAFO DOMEIN 76 BULAGE E STEP PHYSICAL FILES 91 BULAGE F GEGENEREERDE DAL CODE 101

6 B november In het kader van de overeenkomst BDP wordt onderzoek verricht naar PDIJWegen & Viaducten ten behoeve van integratie bij het computerondersteund ontwerpen van civieltechnische werken, door structurering van (deel)produktmodellen annex aspectmodellen, door ontwikkeling van prototype software en door ondersteuning van operationalisatie van onderzoeksresultaten. Voor zowel PDI/Wegen als PDI/Viaduct zijn de werkzaamheden in vier clusters ondergebracht. De clusters uit PDI/Viaduct zijn in het meerjarenprogramma als volgt omschreven: Cluster A: Ontwikkelen en beproeven van integratiemethoden door middel van produktmodellering gericht op produkttypen in het bijzonder het BasisViaduct- Model, alsook gegevensoverdracht tussen systemen; Cluster B: Ontwikkelen en implementeren van een omgeving ten behoeve van de ontwikkeling, prototyping, implementatie en introduktie van produktmodellering en gegevensuitwisseling bij Rijkswaterstaat; Cluster C: Bijdrage leveren tot het operationaliseren van de huidige beschikbare ideeën en kennis uit het verrichte onderzoek in de (viaduct)ontwerppraktijk; specialistische ondersteuning bij realisatie van operationele software; Cluster D: Gericht kennisnemen, beoordelen (monitoren) en terugkoppelen bruikbaarheid voor de (viaduct)ontwerppraktijk van (standaardisatie)-ontwikkelingen, kennisoverdracht, voorlichting, en coördinatie. Dit rapport CAD-neutrale LEAFO editor' doet verslag van een onderdeel uit cluster C. Doel van de aktiviteiten binnen de cluster C is het ondersteunen van het operationaliseren van een deel van de resultaten van het onderzoek. De werkzaamheden binnen deze cluster hebben zich in het verleden vooral gericht op de implementatie van een aantal ideeen op het gebied van produktmodelleren binnen Dimension III. TNO beschikt inmiddels over Dimension III van Computer Vision. Een deelresultaat was de implementatie van LEAFO's (standaardleuning en elementen van een brugdek), die mede in het kader van de Bouwdienstprojecten SKSB en ATOP, tot direkt bruikbare produkten voor CAD-gebruikers van de Bouwdienst hebben geleid. Het LEAFO concept wordt gezien als een goede wijze om de gebruikers te laten profiteren van het idee produktmodel, zonder dat daarvoor direct een ingrijpende verandering in de wijze van werken voor nodig is. LEAFO's maken een geleidelijke invoering van prod uktmodel leren in de ontwerpomgeving mogelijk. In de afgelopen periode zijn er reeds LEAFO's ontwikkeld voor de Bouwdienst. Deze LEAFO's zijn direct in Dimension III geïmplementeerd. Nu gebleken is dat ieder CAD omgeving door verbeteringen en

7 B november aanpassingen langzaam wijzigt is het goed te kijken naar een mogelijkheid om LEAFO's op te bouwen en te beschrijven zodanig dat die opbouw en beschrijving zo veel mogelijk onafhankelijk blijft van het feitelijke CAD-systeem waarop de betreffende LEAFO gebruikt zal worden. Of en op welke wijze CAD-onafhankelijkheid te bereiken is en wat de implicaties daarvan zijn voor de ondersteunende omgeving is een aspect dat in dit rapport de belangrijkste rol zal spelen. Aanpak en werkwijze Belangrijk accent in het onderzoek moet gelegd worden op de vraag hoe een 'standaard komponent' op een CAD-onafhankelijke wijze kan worden ontwikkeld en opgeslagen en hoe vanuit deze 'neutrale' opslag naar een specifiek CAD-systeem kan worden overgegaan. Uitgezocht moet worden of met behulp van PMshell een LEAFO kan worden opgebouwd en op welke wijze daaruit een voor Dimension III bruikbaar LEAFO kan worden afgeleid. De ervaring die wordt opgedaan met een prototype moet gebruikt wor - den om zicht te geven op de verdere ontwikkeling die nodig is om te komen tot een goede tool. De volgende drie taken kunnen worden onderscheiden: Ontwikkelen van een visie op welke wijze CAD-onafhankeljk LEAFO ontwikkeld en gebruikt kunnen worden. Vraagstukken die aan de orde moeten komen zijn de invloed van de mogelijkheden van een specifiek CAD- systeem op de mogelijkheden van LEAFO's, de plaats waar de LEAFO's geïnstantieerd moeten/kunnen worden, etc. Uittesten of prototypen van een LEAFO-systeem waarin de ontwikkelde visie ook op zijn werking zal worden getoetst. Ontwikkelen van een plan voor de verdere implementatie van een CAD-systeem onafhankelijk LEAFO ontwikkel en gebruiksomgeving. Dit rapport verschijnt in het kader van de overeenkomst BDP 'PDI voor Wegen en Viaducten'. Aan de totstandkoming van dit rapport hebben meegewerkt: Marcel Boender, Bart Luijten, Frans van Dam, Wouter Pronk en Niek Kaptijn.

8 B november INLEIDING In de eindrapportage van het project 'Onderzoek LEAFO's' [KUIPER89a, p.241, welke begin van 1990 is afgerond, worden LEAFO's (Leaf Objects) omschreven als objecten: - waaraan niet verder ontworpen wordt - die voor hergebruik in aanmerking komen - die tevens parametriseerbaar zijn - die o.a. uit een procedurele beschrijving bestaan - die verschillende representaties kunnen hebben Voor een afbakening van wat LEAFOs zijn verwijzen wij naar het eerder genoemd eindrapport. De wijze waarop LEAFO's binnen Dimension III ondergebracht kunnen worden is op een eenvoudig principe gebaseerd. Ieder LEAFO is via een decompositie slag te beschrijven in een samenstelling van onderdelen. Elk onderdeel is op zich ook weer onder te verdelen. Voor elk onderdeel dient een DAL procedure geschreven te worden die aan een aantal voorwaarden dient te voldoen. Deze voorwaarden hebben met name betrekking op een aantal standaard te gebruiken argumenten en standaard aan te roepen routines. Deze routines hebben als functie LEAFO Decifieke zaken te regelen en de onderlinge positionering en oriëntaties te ondersteunen. Binnen de ontwikkelingen rond productmodelleren wordt een indeling gehandhaafd waarbij gesproken wordt van programmerend gebruikers die product type modellen definiëren en eindgebruikers die op basis van die product type modellen product modellen samenstellen []. Met betrekking tot de LEAFO's kunnen wij eveneens een dergelijke indeling maken. Aangezien een LEAFO een specificatie is van een product type waaruit, via het invullen van parameters, een product af te leiden is spreken we respectievelijk van LEAFO ontwikkelaars en LEAFO gebruikers. In de afgelopen twee jaar zijn twee LEAFO's uitgewerkt met behulp van de LEAFO ondersteunende routines. De uitwerking van een sierleuning heeft plaats gevonden in 1990 [BOENDER90 en BOENDER91] en in 1992 is de hoofddraagconstructie van het val van een ophaalbrug uitgewerkt [B0ENDER92]. De wijze waarop momenteel nog gebruik gemaakt wordt van LEAFO's heeft uiteraard zowel voordelen als nadelen. Onder de belangrijkste voordelen vallen onder andere de

9 B november herbruikbaarheid van onderdelen, de wijze waarop LEAFOs van verschillende typen (procedureel, submodel, ed.) en verschillende presentatie vormen op overeenkomstige wijze beschreven kunnen worden. Nadelig is echter dat een LEAFO beschrijving CAD systeem gebonden is en dat onderhoud arbeidsintensief is. Dit rapport geeft een beschrijving van de prototype implementatie van een CAD neutrale LEAFO editor. Deze editor heeft tot doel de hier genoemde nadelen binnen het huidige gebruik van LEAFOs weg te werken. In hoofdstuk 2 wordt het ontwerp van de editor beschreven waarna in hoofdstuk 3 een beschrijving wordt gegeven van de wijze waarop de editor is geïmplementeerd. De werking van het prototype wordt getest aan de hand van de uitwerking van een LEAFO voor een damwand constructie. In hoofdstuk 4 wordt de definitiestudie voor de damwand constuctie behandeld waarna in hoofdstuk 5 een beschrijving gegeven wordt van de, met behulp van de LEAFO editor samengestelde, LEAFO implementatie. In hoofdstuk 6 worden aandachtspunten behandeld voor de verdere uitwerking van de CAD neutrale LEAFO editor. Hoofdstuk 7 bevat tenslotte de conclusies en aanbevelingen.

10 november DE CAD NEUTRALE LEAFO EDITOR In het voorgaande hoofdstuk werd een korte inleiding gegeven tot LEAFO's en de aanzet voor de ontwikkeling van een CAD neutrale LEAFO editor. In dit hoofdstuk wordt een eerste definitie gegeven van deze editor. Er wordt het een en ander vastgelegd met betrekking tot de gewenste functionaliteiten. Er wordt nog geen aandacht geschonken aan zaken als bijvoorbeeld de User Interface. 2.1 Het definiëren en gebruiken van LEAFO definities. De wijze waarop momenteel LEAFO's gedefinieerd worden is met name omsiachtig omdat de LEAFO ontwikkelaar veel kennis moet hebben van de procedurele taal van het target CAD systeem. Hij zou in feite niet geconfronteerd willen worden met een specifieke taal. Het zou het meest ideaal wanneer hij via een grafisch interactief systeem de structuur van het object vast kan leggen. Het systeem moet zodanig opgezet zijn dat het zo veel mogelijk de consistentie controleert en wanneer nodig de gebruiker alarmeert. Het moet de LEAFO ontwikkelaar duidelijk zijn welke hulpmiddelen hij tot zijn beschikking heeft en hoe hij deze kan toepassen. Onder deze hulpmiddelen kunnen zowel geometrie typen verstaan worden als iteratieve constructies en decompositie. Heeft de eindgebruiker zijn product definitie af dan kan hij deze afbeelden op één van de gekoppelde procedurele modeleer talen. Denk hierbij aan DAL van Dimension III en Aut0LISP van AutoCAD (zie figuur 2.1.1). Na eventuele compilatie van de gegenereerde code is het LEAFO op het gewenste CAD systeem beschikbaar (zie figuur 2.1.2). r - 1~1 Figuur : Afbeelding product definitie op modeleer talen.

11 B november D neutrale FO editor Figuur Onder Dimension III beschikbaar stellen van een LEAFO Niet elk CAD systeem zal een gelijke set van geometrische en taal syntactische eigenschappen ondersteunen. Die eigenschappen die zij wel gemeen hebben zullen veelal op een verschillende wijze toegepast moeten worden. Voor een systeem als een CAD neutrale LEAFO editor is het van belang uit te kunnen gaan van een aantal zekerheden. Zo zal het systeem bijvoorbeeld moeten 'weten' welke geometrische types altijd ondersteund worden en welke taalconstructies mogelijk zijn. Het is daarom van belang afspraken te maken over dit soort zaken. Met betrekking tot de CAD neutrale LEAFO editor worden dit soort zaken vastgelegd in de neutrale CAD interface. 2.2 De neutrale CAD interface. De functionele opzet van de LEAFO editor is erop gebaseerd procedurele productbeschrijvingen te maken op een CAD systeem onafhankelijke manier. Vanuit die beschrijvingen kunnen procedures afgeleid worden in een CAD systeem specifieke modelleertaal. Tussen de meeste CAD systemen zijn onderling duidelijke verschillen te onderkennen. Veelal heeft dit onderscheid te maken met verschillen in geometrische types of de wijze waarop deze gegenereerd kunnen worden. Dergelijke verschillen zijn eveneens te onderkennen in de beschikbare modelleertalen. Niet elk CAD systeem beschikt over een faciliteit om op een procedurele manier producten te beschrijven. Zij die dat wel hebben verschillen onderling vaak van functionaliteit. Wanneer men een product op een neutrale manier wil beschrijven zal men uit moeten gaan van function ali teiten die op alle, in aanmerking komende, systemen beschikbaar zijn. Er moet dus tussen die CAD systemen gezocht worden naar een subset van overeenkomstige functionaliteiten. Omdat de samenstelling van zon subset sterk afhankelijk is van het aantal betrokken systemen en over het algemeen beperkt in functionaliteit zal zijn moet zeker gekeken worden of die uit te

12 B november breiden is. Het kan namelijk voorkomen dat de subset niet een volledige dekking geeft van de minimale eisen die gesteld worden in verband met het samenstellen van LEAFO's. De neutrale interface omvat alle functionaliteiten die minimaal op een CAD systeem aanwezig moeten zijn voordat LEAFO's vanuit de LEAFO editor aan dat systeem overgedragen kunnen worden. Bij het samenstellen van de indeling van de neutrale interface zijn wij voorlopig uitgegaan van de uiteindelijk LEAFO implementatie van een damwand constructie en van LEAFO generatie voor voorlopig uitsluitend Dimension III. In een later stadium kan de LEAFO editor uitgebreid worden voor generatie van LEAFO's voor andere systemen. Er zal dan zeker het één en ander aangepast moeten worden om de interface 'neutraler' te maken Geometrische entiteiten Het CAD systeem zal minimaal de volgende geometrische entiteiten moeten ondersteunen: - punt een 3D locatie - lijn een 3D lijn - vlak een 31) vlak dat gaten kan bevatten - cirkel een 3D cirkel - cylinder een cylinder-vormige solid - box een box-vormige solid - bol een bol-vormige solid - ruled solid een vormovergang tussen twee profielen langs een rechte - sweep solid een rechtlijnige sweep van elk willekeurig vlak In bijlage A is per geometrische entiteit aanggeven welke functie aanwezig moet zijn en met welke parameters deze aangeroepen dient te worden Procedurele structuren In deze paragraaf wordt een beschrijving gegeven van de procedurele structuren die de procedurele taal van een bepaald CAD systeem moet ondersteunen. Voor de uitwerking hiervan met betrekking tot Dimension III verwijzen wij naar hoofdstuk 4 van het rapport 'Een beschrijving van Calma' [BOENDER89].

13 DI november Datatypes De procedurele taal van het CAD systeem moet minimaal de volgende data types (of equivalenten daarvan) ondersteunen. - scalar integer of real waarde - list lijst van één of meerdere elementen. Een element kan van elk willekeurig data type zijn. - vector een relatieve locatie in een ruimte. Deze wordt gedefinieerd via een x-, een y- en een z-waarde Lists/Arrays Voor het aanmaken en onderhouden van variabelen van het data type list (of array) zijn de volgende functies nodig: - dimension het opzetten van de structuur van een list - add het toevoegen van een element aan een list - makelist zet een lijst op van lengte 1 met een gegeven element - catlist voeg twee lists samen tot één nieuwe Structures Het aan een geometrisch element te koppelen niet-grafische informatie die op elk moment terug te lezen is. Hiertoe zijn minimaal twee functies noodzakelijk, enwel: - addstruct het aan een geometrisch element koppelen van een list met informatie - readstruct het teruglezen van aan een element gekoppelde informatie Operatoren Er zijn verschillende operatoren te onderkennen. Hier wordt per type aangegeven welk noodzakelijk zijn. - Arithmetische operatoren *, / r +, - - Relationele operatoren ==, <>, <1 >, <=, >= - Booleaanse operatoren AND, OR, NOT - Toekennings operatoren Wanneer bijvoorbeeld de talen DAL (Dimension III) en AutoLISP (AutoCAD) naast elkaar gezet worden dan valt op dat in DAL een infix-notatie gebruikt wordt en in AuLoLISP een prefix-notatie. Om dit onderling onderscheid op te vangen zijn de arithmetische operatoren in de neutrale interface ondergebracht als de volgende functies:

14 november PROGRAM LFMULTIPLY VAL1 VAL2 MULTIPLY Bereken de vermenigvuldiging van twee waarden Input VAL1 Waarde 1 VAL2 Waarde 2 Output Resultaat waarde PROGRAM LFDIVIDE VAL1 VAL2 MULTIPLY Bereken de deling tussen twee waarden Input VAL1 Waarde 1; VAL2 Waarde 2 Output Resultaat waarde PROGRAM LFADD VAL1 VAL2 MULTIPLY Bereken de som van twee waarden Input VAL1 Waarde 1 VAL2 Waarde 2 Output Resultaat waarde PROGRAM LFSUBTRACT VAL1 VAL2 MULTIPLY Bereken het verschil van twee waarden Input VAL1 Waarde 1 VAL2 Waarde 2 Output Resultaat waarde Expressies De belangrijkste expressie die als basis dient voor het gehele systeem is de toekenningsopdracht. Het moet mogelijk zijn aan een variabele een waarde toe te kennen. De waarde moet via een functie afleidbaar zijn en kan tevens de identificatie van een geometrisch element zijn. Met name het tijdens geometrie generatie kunnen vastieggen van referenties naar de gecreëerde elementen is van groot belang. Het gehele LEAFO principe is erop gebaseerd dat deze referenties gebruikt kunnen worden.

15 B november Control Flow Ten behoeven van de control flow zijn binnen de procedurele taal minimaal twee control constructies noodzakelijk, en wel: - conditional if-then-else constructies - looping while-do constructies en for-to-do constructies Functies/Procedures Naast het feit dat het mogelijk moet zijn om nieuwe subprogramma's (functies!- procedures) te definiëren zijn een aantal standaard functies van belang. Hierbij kan in dit geval een onderscheid gemaakt worden tussen algemene functies en wiskundige functies. Onder de algemene functies vallen de volgende: - IDENT het via de muis selecteren van een geometrisch item Onder de wiskundige functies vallen: - SINE slflu5 - COSINE cosinus - TANGENT tangens -ARCSIN arcsinus - ARCCOS arccosinus -ARCTAN arctangens - EXP exponentie - LN natuurlijke logaritme -LOGTO logaritme - MODULO modulo -SQRT wortel - SQR kwadraat - de waarde pi (it) LEAFO specifieke functionaliteiten Het CAD systeem zal moeten beschikken over functionaliteiten die LEAFO specifieke zaken ondersteunen. Het is hierbij van belang dat de functionaliteiten aansluiten op de wijze waarop binnen Dimension III LEAFO's geïmplementeerd zijn [BOENDER90]. Het CAD systeem moet uitgerust zijn met functionaliteiten om: - LEAFO specifieke instellingen te initialiseren. Denk hierbij bijvoorbeeld aan variabelen definities, model instellingen en groepsindelingen

16 B november decompositie te ondersteunen. Er moet een mechanisme aanwezig zijn waarmee aangegeven kan worden dat bepaalde onderdelen gegroepeerd moeten worden. In zo'n groepering moeten ook andere groepen opgenomen kunnen worden. - onderlinge plaatsing en oriëntatie te ondersteunen. Een repeterend element dient slechts één maal gedefinieerd te worden. De plaatsing en oriëntatie per instantiatie dient bij 'generatie' plaats te kunnen vinden. In bijlage A is gedefineerd welke LEAFO specifiek functies aanwezig moeten zijn. Per functie wordt een korte beschrijving gegeven en met welke parameters deze aangeroepen dient te worden.

17 B november IMPLEMENTATIE CAD NEUTRALE LEAFO EDITOR 3.1 De opzet van de CAD neutrale LEAFO editor Het centrale idee achter de LEAFO editor is het feit dat een complexe LEAFO kan decomponeren in een aantal simpele LEAFO's. De decompositie eindigt bij de aanroep van standaard onderdelen of bij de aanroep van neutrale geometry waarvan mag worden aangenomen dat deze altijd aanwezig zijn op een CAD systeem. De LEAFO editor biedt de mogelijkheid om deze decompositie te beschrijven. De LEAFO editor is niet bedoeld als een handige editor voor een bepaalde CAD taal. In plaats daarvan moet de LEAFO editor het knutselen met LEAFO's eenvoudiger maken. Daarom is gekozen voor een beperking van de mogelijkheden die een bepaalde CAD taal de gebruiker biedt. De volgende beperkingen vormen de basis voor de LEAFO editor: - Een LEAFO bestaat uit het aanroepen van andere LEAFO's en uit het invullen van de actuele parameters van die andere LEAFO's. - Een LEAFO kan op drie manieren een andere LEAFO aanroepen: eenmalig, herhaald of optioneel. - De positie en oriëntatie van een LEAFO binnen een andere LEAFO kunnen worden vastgelegd met behulp van een positie vector en twee oriëntatie vectoren. - Er kunnen variabelen worden gebruikt om waarden op te slaan die nodig zijn voor het invullen van de actuele parameters. Een overzicht van de standaard onderdelen, de neutrale geometry en de standaard functionaliteit die hiervoor gebruikt mag worden is gegeven in paragraaf 2.1. In figuur 3.1 is een overzicht gegeven van de manier waarop de LEAFO editor is ontwikkeld met behulp van PMshell en is gebruikt voor het implementeren van de LEAFO damwand. Drie soorten gebruikers kunnen daarbij worden onderscheiden. Allereerst moet in PMshell het domein voor de LEAFO editor worden opgebouwd. Dit is het werk van de programmerende gebruiker van PMshell die een aantal klassen met bijbehorende features definieert. Vervolgens kan dit domein worden gebruikt voor het definiëren van de LEAFO damwand. Dit is het werk van de modellerende gebruiker van PMshell in de rol van LEAFO ontwikkelaar. Daarna gaat de LEAFO gebruiker aan het werk en vult een aantal parameters voor de LEAFO damwand in, waarna een exemplaar van de LEAFO op het CAD systeem verschijnt. In figuur 3.1 is tevens aangegeven in welk hoofdstuk of welke

18 B november bijlage de verschillende stadia van het gebruik van de LEAFO editor verder is uitgewerkt. Modellerende Programsiereride gebruiker PMstiell gebruiker 1-1 LEAFO ontwikkelaar t Analyse van de 1 1 LEAFO gebruiker 1 Modelvande 1 Invullen van de procedurele 1 i parameters voor de i beschrijving van LEAFO damwand LEAFO damwand LEAFOs J Hoofdstuk Domain van de 1 c3enereer code 1 Model van de Genereer code Exerrlaar van de procedurele voor LEAFO editoi voor LEAFO damwanc J LEAFO damwand LEAFO damwand beschrijving van Bijl age l - 1 in PMshell 1 het CAD systeem LEAFOs in PMshelI Hoofdstuk 3 Hoofdstuk EXPRESS schema 1 1 STEP physical van de procedurele 1 file van de beschrijving van LEAFO damwand LEAFOs 1 1 Bjlage C 1 3ijlage E 1 L i Figuur 3.1. De verschillende stadia van het gebruik van de LEAFO editor. 3.2 De neutrale LEAFO editor als domein in PMshell Met behulp van PMshell is een prototype gemaakt van de neutrale LEAFO editor. Eerst is de data structuur opgezet met behulp van een NIAM diagram. Deze data structuur is vervolgens voorzien van de nodige functionaliteit om de data structuur te kunnen invullen en om vanuit de data structuur DAL code voor een LEAFO te kunnen genereren. In figuur 3.2 is te zien hoe de data structuur van de LEAFO editor is geïmplementeert als domein in PMshell.

19 B november Figuur 3.2. Het domein voor een CAD neutrale LEAFO editor In het onderstaande deel worden de klassen van het LEAFO domein één voor één behandeld: - LF_LEAFOBJECT: Deze klasse vormt de basis van het LEAFO domein. Objecten van dit type bevatten de complete beschrijving van een LEAFO bestaande uit een lijst van formele parameters (LF_FORMAL), een lijst van variabelen (LF_vARIABLE) en een lijst van statements (LFSTATEMENT). Daarnaast bevatten objecten van dit type een positie (LF_POSITION) en een oriëntatie (LF_ORIENTATION), waarmee de positie en de primaire en secundaire oriëntatie vector in de lokale x,y,z ruimte kunnen worden geplaatst. - LF_LIBRARY: Deze klasse is een specialisatie van de klasse LF_LEAFOBJECT en bestaat uit een verwijzing naar een standaard onderdeel in het CAD systeem. Objecten van dit type bevatten alleen een lijst van formele parameters (LF_FORMAL) waarmee de aanroep van het standaard onderdeel is beschreven.

20 november LF_GEOMETRY: Deze klasse is een specialisatie van de klasse LF_LEAFOBJECT en bestaat uit een verwijzing naar neutrale geometry in het CAD systeem. Objecten van dit type bevatten alleen een lijst van formele parameters (LF_FORMAL) waarmee de aanroep van de neutrale geometry is beschreven. Een overzicht van de neutrale geometry die aanwezig moet zijn op een CAD systeem is gegeven in paragraaf LF_STATEMENT: Objecten van dit type worden gebruikt om vanuit de ene LEAFO te verwijzen naar de anderen LEAFO. Objecten van dit type bestaan uit een verwijzing naar een LEAFO en uit een lijst van actuele parameters (LF_ACTUAL) die overeen komen met de formele parameters van de LEAFO waarnaar verwezen wordt. Daarnaast hebben objecten van dit type een lijst van variabelen (LF_VARIABLE) waarmee waarden van actuele parameters kunnen worden berekend, een positie (LF_POSITION) en een oriëntatie (LF_ORIENTATION) waarmee de positie en de oriëntatie van de LEAFO waarnaar verwezen wordt kan worden bepaald en een scope met een verwijzing naar de LEAFO waar de statement deel van uitmaakt. - LFITERAT!ON: Deze klasse is een specialisatie van de klasse LF_STATEMENT. In tegenstelling tot een object van de klasse LF_STATEMENT kan met een object van het type LF_ITERATION een aantal keer dezelfde LEAFO worden aangeroepen. Objecten van dit type bevatten een start en een stop waarde (LF_EXPRESSION). - LF_CONDITION: Deze klasse is een specialisatie van de klasse LF_STATEMENT. In tegenstelling tot een object van de klasse LF_STATEMENT kan met een object van het type LF_CONDITION optioneel een andere LEAFO worden aangeroepen. Objecten van dit type bevatten een test waarde (LF_EXPRESSION). - LF_PARAMETER: Deze klasse is alleen bedoeld als supertype voor de klassen LF_FORMAL en LF_ACTUAL. - LF_FORMAL: Deze klasse is een specialisatie van de klasse LF_PARAMETER. Met objecten van dit type kan worden aangegeven welke parameters een LEAFO heeft. - LFACTUAL: Deze klasse is een specialisatie van de klasse LF_PARAMETER. Objecten van dit type bevatten de waarde voor een parameter van een LEAFO die wordt aangeroepen vanuit een object van het type LF_STATEMENT. - LF_VARIABLE: Objecten van dit type bevatten een waarde die kan worden gebruikt

21 B november voor het berekenen van de waarde voor een parameter van een LEAFO die wordt aangeroepen vanuit een object van het type LF_STATEMENT. Daarnaast hebben objecten van dit type een scope met een verwijzing naar de LEAFO waar de variabele deel van uitmaakt. Dit wil zeggen dat de variabele uitsluitend binnen het LEAFO beschikbaar is. - LFPOSITION: Deze klasse is een specialisatie van de klasse LF_VARIABLE. Met objecten van dit type kan de positie van een LEAFO binnen een andere LEAFO worden bepaald. Daarnaast kan met een object van dit type de positie van een LEAFO in de lokale x,y,z ruimte worden geplaatst. - LF_ORIENTATION: Deze klasse is een specialisatie van de klasse LF_VARIABLE. Met objecten van dit type kan de orinetatie van een LEAFO binnen een andere LEAFO worden bepaald. Daarnaast kan met een object van dit type de primaire en secundaire oriëntatie vector van een LEAFO in de lokale x,y,z ruimte worden geplaatst. - LF_EXPRESSION: Objecten van dit type bevatten een expressie waarmee een waarde wordt berekend. In het huidige LEAFO domein wordt een expressie als een STRING opgeslagen, zodat de definitie van een LEAFO niet geheel CAD neutraal is. In een uitbreiding op het LEAFO domein kan de structuur van een expressie met operatoren en operands worden opgeslagen, waarmee de definitie van een LEAFO wel geheel CAD neutraal is. In bijlage C wordt het EXPRESS schema gegeven van het LEAFO domein en in bijlage D worden de documentatie gegeven van de klassen uit het LEAFO domein. 3.3 Een diagram techniek voor de neutrale LEAFO editor PMshell biedt de mogelijkheid om op een grafische manier met een model te werken. Voordat hiervan gebruik gemaakt kan worden moet eerst een diagram techniek worden gedefinieerd. In de volgende paragrafen wordt voor elke klasse uit het LEAFO domein een symbool gegeven en een lijst met operaties gedefinieerd.

22 B november LEAFOBJECT Mai. I1u):!1 - initialise: Initialiseer het leafobject. Als resultaat zal het leafobject een positie en een oriëntatie krijgen. - hide: Verberg de implementatie van het leafobject. Alleen de formele parameters blijven zichtbaar, de statements en de variabelen verdwijnen van het scherm. - show: Laat de implementatie van het leafobject zien. Zowel de formele parameters als de statements en de variabelen worden zichtbaar op het scherm. - place: Plaats alle objecten die tot de decompositie van het leafobject behoren op een overzichtelijke manier op het scherm - append_parameters: Voeg een of meer formele parameters toe aan het leafobject. - delete_parameters: Verwijder een of meer formele parameters uit het leafobject. - append_statements: Voeg een of meer statements toe aan het leafobject. - delete_statements: Verwijder een of meer statements uit het leafobject. - append_variables: Voeg een of meer variabelen toe aan het leafobject. - delete_variables: Verwijder een of meer variabelen uit het leafobject. - generate: Genereer DAL code voor het leafobject. - cancel LIBRARY - place: Plaats alle formele parameters die tot het standaard onderdeel behoren op een overzichtelijke manier op het scherm - append_parameters: Voeg een of meer formele parameters toe aan het standaard onderdeel. - delete_parameters: Verwijder een of meer formele parameters uit het standaard onderdeel.

23 B november cancel GEOMETRY Z& GEOMETRY - place: Plaats alle formele parameters die tot de neutrale geometry behoren op een overzichtelijke manier op het scherm - append_parameters: Voeg een of meer formele parameters toe aan de neutrale geometry. - delete_parameters: Verwijder een of meer formele parameters uit de neutrale geometry. - cancel STATEMENT STATEMENT - initialise: Initialiseer het statement. Als resultaat zal het statement een positie en een oriëntatie krijgen. - set_ieafobject: Vul het leafobject van het statement in. Als resultaat zal het statement een aantal actuele parameters krijgen die overeen komen met de formele parameters van het leafobject. - append_variables: Voeg een of meer variabelen toe aan het statement. - delete_variables: Verwijder een of meer variabelen uit het statement. - cancel

24 B november ITERATION ITERATION - initialise: Initialiseer de iteratie. Als resultaat zal de iteratie een positie en een oriëntatie opleveren voor de te plaatsen onderdelen binnen het LEAFO. - set_ieafobject: Vul het leafobject van de iteratie in. Als resultaat zal de iteratie een aantal actuele parameters krijgen die overeen komen met de formele parameters van het leafobject. - enter_start_value: Vul een expressie in voor de start waarde van de iteratie. - enter_stop_value: Vul een expressie in voor de stop waarde van de iteratie. - append_variables: Voeg een of meer variabelen toe aan de iteratie. - delete_variables: Verwijder een of meer variabelen uit de iteratie. - cancel CONDMON CONDITION - initialise: Initialiseer de conditie. Als resultaat zal de conditie een positie en een oriëntatie krijgen. - set_ieafobject: Vul het leafobject van de condition in. Als resultaat zal de conditie een aantal actuele parameters krijgen die overeen komen met de formele parameters van het leafobject. - enter_test_vatue: Vul een expressie in voor de test waarde van de conditie. - append_variables: Voeg een of meer variabelen toe aan de conditie. - delete_variables: Verwijder een of meer variabelen uit de conditie. - cancel

25 november FORMAL FORMAL - cancel ACTUAL ACTUAL - enter value: Vul een expressie in voor de value van de actuele parameter. Indien de actuele parameter wordt gebruikt in een iteratie en er is geen expressie voor de offset ingevuld dan krijgt de actuele parameter aan het begin van elke loop doorgang de value als waarde toegekend. - enter_oftset: Vul een expressie in voor de offset van de actuele parameter. Indien de actuele parameter wordt gebruikt in een iteratie dan krijgt de actuele parameter aan het einde van elke loop doorgang de offset als waarde toegekend. - cancel VARIABLE. 1!0 1 VARIAFLE - enter_value: Vul een expressie in voor de value van de variabele. Indien de variabele wordt gebruikt in een iteratie en er is geen expressie voor de offset ingevuld dan krijgt de variabele aan het begin van elke loop doorgang de value als waarde toegekend.

26 B november enter_offset: Vul een expressie in voor de offset van de variabele. Indien de variabele wordt gebruikt in een iteratie dan krijgt de variabele aan het einde van elke loop doorgang de offset als waarde toegekend. - cancel POSITION POSITION - enter_value: Vul een expressie in voor de value van de positie. Indien de positie wordt gebruikt in een iteratie en er is geen expressie voor de offset ingevuld dan krijgt de positie aan het begin van elke loop doorgang de value als waarde toegekend. - enter_offset: Vul een expressie in voor de offset van de positie. Indien de positie wordt gebruikt in een iteratie dan krijgt de positie aan het einde van elke loop doorgang de offset als waarde toegekend. - select_coordinate: Selecteer een as (x, y of z) waarlangs de offset werkt. - cancel ORJENTATION ORIENTATION - enter_value: Vul een expressie in voor de value van de oriëntatie. Indien de oriëntatie wordt gebruikt in een iteratie en er is geen expressie voor de offset ingevuld dan krijgt de oriëntatie aan het begin van elke loop doorgang de value als waarde toegekend. - enter_offset: Vul een expressie in voor de offset van de oriëntatie. Indien de oriëntatie wordt gebruikt in een iteratie dan krijgt de oriëntatie aan het einde van elke loop-doorgang de offset als waarde toegekend. - cancel

27 B november DEFINITIESTUDIE DAMWAND CONSTRUCTIE Het eerste LEAFO dat met behulp van de LEAFO editor uitgewerkt zal worden is die van een damwand constructie. De keuze is hierop gevallen omdat het een constructie is die voor zowel de droge- als natte infrastructuur, en dus voor de gehele Rijkswaterstaat, van belang is. Daarnaast is van de damwand constructie al het een en ander op papier beschikbaar en is de constructie niet al te complex. Omdat er verschillende types damwand constructies mogelijk zijn en per type meerdere uitvoeringen is besloten een afbakening te maken waarbinnen de implementatie moet plaats vinden. In dit hoofdstuk wordt in eerste instantie de afbakening omschreven en wordt een beschrijving gegeven van de definitie studie. 4.1 Afbakening Voor de uitwerking van de damwand constructie als LEAFO zijn de volgende aannames afgesproken: - De damwand wordt verankerd met de zogenaamde grout-ankers - De eerste ankerstang wordt bevestigd in de eerste plank - De laatste ankerstang wordt bevestigd in de laatste plank - De ankerstang staat altijd haaks op de damwand - De uit te werken representaties worden beperkt tot 3D en stuklijst - De uitwerking heeft betrekking op het ontwerp van een damwand in de voorontwerp fase - Er wordt één type plank uitgewerkt met voor dat type meerdere keuzes (nummers) Als invoer voor het uit te werken LEAFO voorbeeld moet uit worden gegaan van de volgende zaken: - De plaatsing van de damwand vindt plaats via de selectie van een projectie op het XY-vlak van de referentielijn van de gording. Deze kan in het bovenaanzicht spline-vormig zijn (Composite Curve). De hoogtes van het beginpunt en het eindpunt dienen aangegeven te worden in meters ten opzichte van NAP. - Daarbij moeten de hoogtes van de bovenzijde en de onderzijde aan zowel het begin- als het eindpunt worden aangegeven in meters ten opzichte van NAP.

28 november De maximale afstand tussen de ankerstangen wordt aangegeven aan de hand van een aantal planken. - De helling van het anker wordt aangegeven via een hellingsfactor. 4.2 Definitie studie Binnen het kader van de afbakening heeft een beknopte definitiestudie plaatsgevonden om meer inzicht in de constructie en de problematiek van generatie te verkrijgen. In eerste instantie zijn schematische tekeningen gemaakt van het uit te werken type met daarbij de benamingen van de verschillende onderdelen. Verder heeft de definitiestudie bestaan uit het opstellen van een decompositieboom en van een NIAM schema waarin de onderlinge relaties tot uiting komen. Ten slotte wordt aangegeven van welke parameters de LEAFO afhankelijk is en op welke wijze deze aan de eindgebruiker opgevraagd zullen worden. De hieruit verkregen informatie is voldoende om een eerste proefimplementatie van een LEAFO te maken Benamingen Om enige verwarring omtrent terminologie te voorkomen wordt in deze paragraaf vastgelegd welke onderdelen van de constructie met welke benamingen gerefereerd zullen worden. Om niet te vervallen in ellenlange beschrijvingen wordt het volstaan met het in schematische voorstellingen benoemen van de onderdelen.

29 B november m oelplaat ikerstoel plank gording-pla verbindii ankerstang koppeft g rout ii iuei uitplaat Figuur : Benamingen damwand Damwand decompositie Om inzicht te krijgen in welke onderdelen in een damwand constructie voorkomen zijn in eerste instantie decompositiebomen opgesteld zoals te zien in onderstaande figuren. damwand "sch Figuur : Damwand decompositie

30 B november "scheidingswand" "gording "gording-planken plank gordtng) verbiding" verbhiding" "bovenbalk" "beneden balk" sluitplaat ~ut \\/J Figuur : Scheidingswand decompositie groutanker ankerstang ankerstoel stoeiplaat moer ( grout Figuur : Groutanker decompositie NIAM definitie Onderstaande figuur bevat het NIAM schema van de te implementeren damwandconstructie.

31 november bestaat uit is onderdeel van scheidingswand" groutanker is verbonden met is verbonden met Figuur NIAM schema damwand

32 B november scheidingswand bestaat uit is onderdeel van "gordlng verbinding" bestaat uit is onderdeel van bestaat uit s onderdeel van is verbonden verbonden met met "gording-planken verbinding" zï plank IS IS verbonden verbonden met met / )nden verbonden iet met bestaat bestaat - bestaat uit uit uit is is is onderdeel onderdeel onderdeel van van van bestaat uit is onderdeel van bestaat uit is onderdeel van )venbalk" "beneden balk" sluitplaat koppelbout is is is is verbonden.-bonden verbonden verbonden met met met met Figuur : NIAM schema scheidingswand

33 B november routanker bestaat uit bestaat uit bestaat uit bestaat uit is onderdeel van is onderdeel van bestaat uit is onderdeel van is onderdeel van is onderde v grout ) ankerstoel stoelpiaat moer is is is is verbonden verbonden verbonden verbonden met met met met ankerstang-1jj --' is verbonden met is verbonden met \...J' is verbonden met is verbonden niet Figuur : NIAM schema groutanker LEAFO parameters De parameters die de constructie van de damwand bepalen dienen van de volgende types te zijn: - De referentie lijn Item Id van een Composite Curve. - De hoogtes Real waarden - De afstand tussen ankerstangen Integer waarde - De hellingsfactor van de ankers Real waarde De referentie lijn mag bestaan uit een enkele item van bijvoorbeeld het type lijn of cirkelboog of is opgebouwd uit een geschakelde reeks items en samengevoegd tot één item van het type Composite Curve. De vorm mag hooguit een zacht verlopend pad volgen (zie figuur ). Sterke richtingscorrecties worden niet ondersteund (zie figuur ). In die gebieden zouden in de praktijk merken geplaatst worden met een aangepaste (kortere) lengte. Wij verdelen een damwand in merken van gelijke lengte.

34 B november Y Figuur : Damwand referentie lijn Y x Figuur : Damwand referentie lijn - niet ondersteund In onderstaande figuur is te zien van welke waarden de hoogte parameters voorzien moeten worden. Alle hoogte waardes dienen meters ten opzichte van NAP gegeven te worden. HB1 HOl HB2 H02 HG AA HA Hoogte bovenzijde startpunt Hoogte onderzijde startpunt Hoogte bovenzijde eindpunt Hoogte onderzijde eindpunt Gemiddelde hoogte van de gording Maximaal aantal planken tussen twee ankerstangen Helling in verticale richting van een ankerstang

35 B november Figuur : Damwand hoogte parameters Het LEAFO algorithme De implementatie van het LEAFO voor de damwand kan vrijwel recht-toe-recht-aan uitgewerkt worden. Er moet echter rekening gehouden worden met het feit dat de referentielijnvoor de damwand gekromd mag zijn (zie figuur ). Figuur : Referentielijn Aangezien de damwand op het hoogste decompositie niveau onderverdeeld wordt in merken zal de referentielijn benaderd worden door rechte stukken. Voor het per merk bepalen van het begin- en eindpunt is het volgende indelingsprincipe bedacht. Wanneer de lengte van elk merk bekend is (zie verder in deze paragraaf) kan de positie van het eerste merk alsvolgt bepaald worden. Het beginpunt van de referentielijn dient als middelpunt van een cirkel met een straal gelijk aan de berekende lengte van het merk. Het snijpunt van die cirkel met de referentie lijn is het eindpunt van het merk en tevens het beginpunt van het daarop volgende merk. Dit principe kan sequentieel voor alle merken uitgevoerd worden (zie figuur ).

36 november Figuur : Indeling van referentielijn in merken Aangezien een damwand uitsluitend kan 'buigen' om de aangrijpingspunten tussen de planken is de lengte afhankelijk van het aantal planken en de breedte per plank. Wij laten in het uitgewerkte voorbeeld de 'buigpunten' vallen tussen elke oneven- en even plank (zie figuur ). buigpunt Figuur : Buigpunten De breedte van een plank wordt hier bepaald door de breedte-afstand tussen aangrijpingspunten (zie figuur ). Figuur : Breedte van een plank

37 B november IMPLEMENTATIE LEAFO VOOR DAMWAND CONSTRUCTIE De implementatie in PMshell van de LEAFO damwand bestaat uit het invoeren van de decompositie structuur zoals die is weergegeven in paragraaf Allereerst wordt een object van het type LF_LEAFOBJECT gemaakt met de naam DAMWAND. Daarna worden één voor één objecten van het type LF_FORMAL gemaakt, van een parameter naam voorzien en aan het object DAMWAND toegevoegd. Het resultaat is dat de interface van de LEAFO damwand is gedefinieerd en dat nu een implementatie kan worden gegeven. De LEAFO damwand decomponeert in de LEAFO merk en er moet dus een object van het type LF_LEAFOBJECT worden aangemaakt met de naam MERK. Ook hier moeten objecten van het type LF_FORMAL worden gemaakt, van een parameter naam worden voorzien en aan de LEAFO merk worden toegevoegd om de interface compleet te maken. De LEAFO damwand bestaat uit een aantal aanroepen van de LEAFO merk. Dit kan worden bereikt door een object van het type LF_ITERATION te maken en dit object toe te voegen aan de LEAFO damwand. Vervolgens wordt de LEAFO merk toegevoegd aan het object van het type LF_ITERATION. Hiermee is de decompositie relatie tussen de LEAFO damwand en de LEAFO merk gelegd. In figuur 5.1 is te zien hoe de LEAFO damwand decomponeert in de LEAFO merk door middel van een object van het type LF_ITERATION.

38 B november 1992 gtol II U fi I DND AANDH(1WAI J-Uj DAtl.JAND_HA ISER I. : t riiu JU_LI IJ- 1 M Q I I <~> [Q (~> IC) ~~mrk_psn 1 T_MERK_NR_PLI RK.TJ1ERK_'N1I T_MEi_HO T_M<HB2ITER<_HOIKiLMERK_HA RK_OTN [ U _ AU--1 NR_PLf*1EPK_F1 MERK_HL MERK_\IJI ME_HB2 RK_H02 MERK_-" MERI<_HA MERK Figuur 5.1. Decompositie van de LEAFO damwand.

39 B november Op dezelfde manier kan de LEAFO merk worden gedecomponeerd in de LEAFO's plank, gording en anker. Dit is te zien in figuur 5.2. Voor de duidelijkheid is de implementatie van de LEAFO merk verborgen, zodat statements, variabelen en actuele parameters zijn weggelaten. De LEAFO's plank en gording verwijzen naar de standaard onderdelen LFSTDPLANK en LFSTDGORDING. De LEAFO anker decomponeert verder in de LEAFO's moer, stoeiplaat, ankerstoel, stang en grout. Dit is te zien in figuur 5.3. Voor de duidelijkheid is de implementatie van de LEAFO anker weer verborgen, zodat statements, variabelen en actuele parameters zijn weggelaten. Figuur 5.2. Decompositie van de LEAFO merk.

40 B november Figuur 5.3. Decompositie van de LEAFO anker. Naast het definiëren van de decompositie van LEAFO's is het ook noodzakelijk om de waarden van de actuele parameters van de LEAFO's te berekenen. Dit is in de huidige versie van de LEAFO editor een tamelijk omslachtige zaak omdat één voor één de expressies voor de actuele parameters moeten worden ingevuld. Hierbij is het vaak noodzakelijk om extra variabelen toe te voegen om tussenresultaten te berekenen. In hoofdstuk 6 worden een aantal suggesties gedaan waarmee het invullen van expressies aanmerkelijk kan worden verbeterd. Omdat de gebruiker van de LEAFO editor voor PMshell een modellerende gebruiker is, kunnen modellen worden weggeschreven in het STEP physical file formaat. In bijlage E zijn voor de boven getoonde drie modellen de corresponderende STEP physical files afgedrukt.

41 november INSTANTIATIE LEAFO VOOR DAMWAND CONSTRUCTIE Na generatie van de DAL code voor de LEAFO damwand (zie bijlage F) kan de LEAFO onder Dimension III worden gebruikt. Voor het testen van de LEAFO damwand is een klein programma in DAL geschreven dat een referentie lijn genereert, vervolgens de benodigde parameters aan de gebruiker opvraagt en daarna de LEAFO met deze ingevulde parameters aanroept. In het geval van een rechte als referentie lijn zal de damwand eveneens langs een rechte geplaatst worden (zie figuur 6.1). //,fl / / (fl Figuur 6.1 : Instantie rechte damwand overzicht. In het voorbeeld wordt de damwand opgebouwd uit 2 merken. die elk 6 planken en 2 ankerstangen bevatten (zie figuur 6.2). In het geval van het voorbeeld blijft de onderzijde van de damwand over de gehele lengte op een hoogte terwijl de bovenzijde afloopt (zie figuur 6.3). We kijken vevolgens meer in detail naar de plaats waar twee planken in elkaar grijpen en waar tevens een ankerstang geplaatst is. Er is dan duidelijk te zien dat de planken netjes in elkaar grijpen en dat de ankerstoel, de stoelpiaat en de moer mooi op elkaar en op de planken aansluiten (zie figuur 6.4).

42 B november { ia Figuur 6.2: Instantie rechte damwand bovenaanzicht. Figuur 6.3: Instantie rechte damwand vooraanzicht.

43 B november Figuur 6.4 : Instantie rechte damwand details. In het geval een damwand gewenst is die langs een bepaalde kromme loopt (zie figuur 6.5) dan dient deze homme als argument aan het LEAFO meegegeven worden. Figuur 6.5: Referentielijn kromme damwand bovenaanzicht.

44 november De damwand wordt vervolgens in de noodzakelijke merken in gedeeld en langs de kromme opgebouwd (zie figuur 6.6). Figuur 6.6: Instantie kromme damwand overzicht. Door de merken onderling in een bepaalde hoek te plaatsen kan de gewenste kromme gevolgd worden (zie figuur 6.7). In dit voorbeeld wordt geen rekening gehouden met zaken als minimale en maximale hoek tussen twee merken. Deze hoek is in werkelijkheid afhankelijk van de vrijheidsgraad tussen twee planken (zie par ). Alle merken van de damwand hebben in het voorbeeld de zelfde lengte. In werkelijkheid zal dit zelden het geval zijn. Wanneer bijvoorbeeld een scherpere bocht gemaakt moet worden zal men ter plekke gebruik willen maken van kortere merken. In het vooraanzicht (figuur 6.8) is te zien dat de onderzijde van de damwand oploopt terwijl de bovenzijde afloopt. Tevens is te zien dat de ankerstangen een zekere helling hebben gekregen.

45 B november Figuur 6.7 : Instantie kromme damwand boven aanzicht. Figuur 6.8: Instantie kromme damwand voor aanzicht.

46 november In onderstaande figuren worden twee realistische aanzichten gegeven op de gekromde damwand instantie. De afbeeldingen zijn gegenereerd met behulp van de public domain raytracer 'Rayshade 4.0'. Figuur 6.9: Overzicht gekromde damwand Figuur 6.10: Detail gekromde damwand.

47 B november VERDERE UITWERKING VAN DE CAD NEUTRALE LEAFO EDITOR In dit hoofdstuk wordt een overzicht gegeven van de nodige aanpassingen en uitbreidingen die nodig zijn voordat gesproken kan worden over een eerste productie versie van de LEAFO editor. Er wordt een onderverdeling gemaakt naar zaken gericht op de LEAFO ontwikkeling en zaken gericht op het uiteindelijke LEAFO gebruik. 7.1 LEAFOs ontwikkelen Met betrekking tot de verdere uitwerking van de LEAFO editor zijn de volgende zaken op te merken LEAFO administratie Tijdens het ontwikkelen van de LEAFO voor de damwand is het handig gebleken om met meerdere modellen tegelijk te kunnen werken. Dit houdt in dat in PMshell voorzieningen moeten worden getroffen om tussen modellen te kunnen wisselen. Dit kan op een eenvoudige manier worden gerealiseerd door te werken met meerdere STEP physical files Generieke formulieren Zoals al werd vermeld in hoofdstuk 5 is het invullen van expressies voor het berekenen van de waarde van variabelen en actuele parameters een omslachtige aangelegenheid. Dit wordt ten dele veroorzaakt door het feit dat expressies in de huidige versie van de LEAFO editor als strings worden opgeslagen, waarbij verder geen controle op de syntax wordt gedaan. Eventuele fouten komen pas aan het licht als de LEAFO wordt gecompileerd of gebruikt op het CAD systeem. Met behulp van op maat gemaakte invulformulieren wordt het opbouwen van een expressie veel makkelijker. Er kan een lijst van operatoren en een lijst van operanden worden gepresenteerd, waaruit de gebruiker een keuze kan maken. De lijst van operatoren komt overeen met de standaard functionaliteit, zoals die is beschreven in paragraaf 2.1. De lijst van operanden bestaat uit de lijst van formele parameters van de LEAFO en de lijst van variabelen van de LEAFO. Op deze manier kan een expressie worden opgebouwd op een neutrale manier en kunnen syntax fouten worden voorkomen. In figuur 7.1 is een voorbeeld gegeven van een invulformulier voor het opbouwen van een expressie. In bijlage B is de specificatie opgenomen van een domein voor generieke

48 B november formulieren. Met behulp van dit domein kunnen modellen van invulformulieren worden opgebouwd, die vervolgens kunnen worden gebruikt in diverse andere domeinen. Operators Operands LFDIFVEC ANKERLEN LFDIRVEC ANKERDIA LFDIFVEC DIKTE_MO LFMULTIP DIKTE_ST IUiJkAI'] HOOGTE_ LFLENGTH DIKTE_SL LFSLJBSTR LFLFMEAS DIKTE_PL E (BREEDTE_GORDING 2) 1 1 OK CANCELJ Figuur 7.1. Een invulformulier voor het opbouwen van een expressie Grafische terugkoppeling Tijdens het opbouwen van de LEAFO damwand bleek dat een aantal fouten pas aan het licht komen als de LEAFO wordt gebruikt op het CAD systeem. Om al eerder deze fouten te kunnen verbeteren is het nodig een soort grafische terugkoppeling te krijgen van de LEAFO onder constructie. Op deze manier heer de gebruiker voortdurend de vorm van de LEAFO op het scherm en worden fouten in bijvoorbeeld de positie of orientatie van sub LEAFO's direct zichtbaar Meerdere representatie vormen De LEAFO editor biedt momenteel nog geen directe ondersteuning voor het definiëren van meerdere representatie vormen van een bepaald LEAFO. Het is momenteel nog niet voldoende duidelijk hoe deze ondersteuning geboden moet worden. 7.2 LEAFO's gebruiken Met betrekking tot het uiteindelijke LEAFO gebruik komen de volgende zaken voor uitbreiding en/of aanpassing in aanmerking Automatische shell generatie De wijze waarop een LEAFO definitie uiteindelijk gegenereerd wordt is bepalend voor de

49 B november wijze waarop een LEAFO gebruikt kan worden. De procedurele definitie van het LEAFO (DAL, AutoLISP, ed.) is te zien als een eenvoudige routine die aangeroepen moet worden. Alle parameters die het LEAFO 'sturen' zijn binnen de procedurele definitie ondergebracht als argumenten. Het LEAFO moet dus vanuit een programma aangeroepen worden. Aangezien de argumenten en hun types bij het genereren van de procedurele definitie bekend zijn moet het tevens mogelijk zijn een soort schil te genereren die de gebruiker prompt om de gewenste gegevens. Wanneer alle gegevens verkregen zijn kan deze schil vervolgens het LEAFO instantiëren Het gebruik van standaard komponenten bibliotheken Momenteel wordt op een nog gekunstelde wijze gebruik gemaakt van standaard komponenten zoals submodellen en standaard profielen. Dit heeft met name te maken met het feit dat het inlezen én hergebruiken van externe modellen nog niet goed binnen Dimension III geregeld is. Momenteel wordt binnen Rijkswaterstaat gewerkt aan een hulpmiddel die dit probleem helpt op te lossen.

50 B november CONCLUSIES EN AANBEVELINGEN Gekomen aan het eind van dit project zijn een aantal conclusies te trekken die van belang zijn voor de verdere ontwikkelingen op dit gebied. Teven kunnen wij enkele aanbevelingen geven ten aanzien van de verdere uitwerking van de LEAFO editor. 8.1 Conclusies Het is mogelijk gebleken om de procedurele beschrijving van eenvoudige LEAFO's op te slaan op een CAD neutrale manier. Daarbij is niet verder gegaan dan het opslaan van de decompositie van een LEAFO op neutrale wijze. Het beschrijven van de expressies die in een LEAFO worden gebruikt is nog op een CAD afhankelijke wijze gedaan. Er bestaan echter genoeg ideeen om ook expressies op neutrale wijze te beschrijven. De mogelijkheden van de LEAFO editor zijn sterk afhankelijk van de neutrale interface die beschikbaar mag worden verondersteld op elk CAD systeem. Het verder uitwerken van deze neutrale interface is dan ook een van de belangrijkste vervolg taken. Het huidige prototype van de LEAFO editor laat aan bedieningsgemak nog een hoop te wensen over. Een aantal ideeën over het verbeteren van het bedieningsgemak door het gebruik van generieke formulieren zijn genoemd in hoofdstuk 7. Als deze ideeën worden geïmplementeerd dan ziet het ernaar uit dat de LEAFO editor tot een bruikbare tool kan uitgroeien. Een bijkomend voordeel van de LEAFO editor is dat er een standaard manier van werken wordt gebruikt voor het ontwikkelen van een LEAFO. Op deze manier is een LEAFO niet alleen eenvoudig te ontwikkelen, maar kan een LEAFO naderhand ook door anderen worden hergebruikt. Met behulp van de LEAFO editor is het mogelijk om de procedurele beschrijving van een LEAFO weg te schrijven naar een STEP physical file. Daarnaast is het mogelijk om de structuur van deze STEP physical file weg te schrijven naar een EXPRESS schema. Op deze manier is het mogelijk om procedurele beschrijvingen uit te wisselen tussen verschillende CAD systemen. Ook is het mogelijk om de koppeling van de LEAFO editor met een andere CAD systeem te implementeren als een vertaling van een STEP physical file naar een procedurele beschrijving in een CAD specifieke programmeertaal. Op deze manier kan één LEAFO editor gemaakt en onderhouden worden en kunnen koppelingen naar verschillende CAD systemen als aparte vertalers worden toegevoegd.

51 B november Met behulp van een knowledge-based ontwerp pakket zoals bijvoorbeeld Design [B0ENDER&LUUTEN] kunnen ook LEAFO's worden opgebouwd. De parameters die bij het instantiëren van een LEAFO moeten worden ingevuld zullen dan automatisch als ontbrekende gegevens worden opgevraagd. Bij het instantiëren van een LEAFO zal echter steeds de hulp van het ontwerp pakket nodig zijn. Dit houdt in dat voor elk Dimension III werkstation waas met LEAFO's wordt gewerkt een licentie voor het knowledge-based ontwerp pakket nodig is. De LEAFO editor daarentegen genereert DAL code die onafhankelijk van PMshell kan worden gebruikt voor het instantiëren van een LEAFO. De LEAFO editor biedt voldoende functionaliteit voor het definiëren van relatief eenvoudige LEAFO's. De toelaatbare complexiteit van de te definiëren LEAFO's is afhankelijk van de invulling van de neutrale interface. De neutrale interface neemt hierbij dus een belangrijke plaats in. Het is dus van belang de neutrale interface te baseren op bestaande standaards zoals bijvoorbeeld de STEP resource modellen. 8.2 Aanbevelingen Op korte termijn zal de huidige implementatie van de LEAFO editor en de definitie van de neutrale interface aangepast moeten worden. Met name de volgende zaken dienen aangepakt te worden. Het onder Dimension III instantiëren van een LEAFO is op het moment nog een tijdrovende aangelegenheid. Het verdient dan ook aanbeveling om de LEAFO ondersteunende software onder DAL te verbeteren en te optimaliseren. Alleen op deze manier is een professioneel gebruik van een LEAFO onder Dimension III mogelijk. De user interface van de LEAFO editor kan sterk worden verbeterd. Dit zal voornamelijk neerkomen op een aantal uitbreidingen van de mogelijkheden van PMshell. Met name het domein voor generieke formulieren zal verder moeten worden ontwikkeld, zodat een op maat gesneden dialoog met de LEAFO ontwikkelaar kan worden gemaakt. De verdere ontwikkeling van de user interface van de LEAFO editor kan het beste met medewerking van de user interface groep van PMshell worden gedaan. Een grafische terugkoppeling tussen de LEAFO editor en het CAD systeem zal leiden tot een optimalisatie in het werken met de LEAFO editor. Op deze manier kan een LEAFO ontwikkelaar constant controleren of de LEAFO correct gedefinieerd is. Deze grafische terugkoppeling van een CAD systeem dient dan ook nader onderzocht te worden.

52 B november De verbeterde user interface van de LEAFO editor kan op gebruikersvriendelijkheid worden getest door een volgende (complexere) LEAFO te implementeren. Dit dient bij voorkeur te gebeuren door een gebruiker die niet bekend is met de programmeertaal DAL en die niet bij de ontwikkeling van de LEAFO editor betrokken is geweest. De bevindingen van deze gebruiker kunnen waardevolle informatie opleveren voor het verbeteren van de user interface van de LEAFO editor. Met behulp van een koppeling met een ander CAD systeem kan worden gecontroleerd of en in hoeverre de LEAFO editor werkelijk CAD neutraal is. Pas dan zal aan het licht komen of de neutrale interface niet te lage of te hoge eisen stelt aan de specifieke mogelijkheden van een CAD systeem. Een mogelijkheid is om een koppeling met Aut0CAD te implementeren, mede vanwege de de grote verschillen tussen de programmeertalen DAL en Aut0LISP. Momenteel is het nog niet mogelijk binnen de LEAFO editor meerdere representaties voor één bepaald LEAFO te definiëren. Dit is echter een van de belangrijkste eigenschappen van een LEAFO. Het is dus zeker aan te bevelen de LEAFO editor hoertoe voldoende ondersteuning te laten bieden. Het is aan te bevelen om naar soortgelijke ontwikkelingen op het gebied van grafisch programmeren te kijken en eventueel op deze ontwikkelingen aan te sluiten. Daarbij wordt met name gedacht aan de ontwikkeling van CV-AEC bij Computer Vision. Op de langere termijn zal gewerkt moeten worden aan een invulling van de neutrale interface die zelfs op langere termijn voldoende functionaliteit kan bieden. Hierbij is het van belang goed te kijken naar reeds bestaande standaards.

53 november LITERATUUR [KUIPER89a] Kuiper, P, M.J.G.M. van Emmerik, P.H. Willems, Onderzoek LEAFO's, TNO-Bouw, afd. Bouwinformatica, Rijswijk, februari 1990, B [KUIPER89b] Kuiper, P., Samenvatting Onderzoek LEAFO's, TNO-Bouw, afd. Bouwinformatica, Rijswijk, oktober 1989, B [BOENDER90] Boender, M.R., Implementatie Standaard Komponent, TNO- Bouw, afd. Bouwinformatica, Rijswijk, november 1990, B [BOENDER9I] Boender, M.R., W. Pronk, Defining Standard Components, TNO-Bouw, afd. Bouwinformatica, Rij swijk, Rijkswaterstaat, Bouwdienst, Voorburg, november 1991, The European CAD/CAM Conference 3-5 december [BOENDER92] Boender, M.R., LEAFO-implementatie van de hoofddraagcon- structie van een val, TNO-Bouw, afd. Bouwinformatica, Rijswijk, februari 1992, B [BOENDER&LUTJTEN] Boender, M.R., B.F.M. Luijten, Design+ + evaluatie, TNO- Bouw, afd. Bouwinformatica, Rij swijk, februari 1992, B

54 B november BIJLAGE A NEUTRALE INTERFACE CALLS DIMENSION III

55 B november A. 1 Geometrische entiteiten Punt PROGRAM LFPNT COORD LFPNT Creëer een punt Input COORD Coördinaat Output Item-id van gecreëerd object LUn PROGRAM LFLNE COORDS LFLNE Creëer een lijn Input COORDS Coördinatenhijst Output Item-id van gecreëerd object Cirkel PROGRAM LFCRC CPNT RADIUS LFCRC Creëer een cirkel. Input CPNT Middelpunt van de cirkel RADIUS Straal van de cirkel Output Item-id van het gecreëerde object Polygon PROGRAM LFFCE LOOP LFFCE Creëer een face. Een face kan bestaan uit een polygon die een aantal gaten bevat. Input LOOPS List van sublists die ieder een lus van een face beschrijven Output Item-id van het gecreëerde object Cylinder

56 B november PROGRAM LFCYL CLOC CDIA LFCYL Creëer een cylinder Input CLOC Locatie van de cylinder (List : 2x3) CDIA Diameter van de cylinder Output Itemld van het gecreëerde item PROGRAM LFBOX BORIGIN BLENGTH BWIDTH BHEIGHT LFBOX Creëer een box Input BORIGIN Nulpunt van de BOX BLENGTH Lengte van de BOX (X) BWIDTH Breedte van de BOX (Y) BHEIGHT Hoogte van de BOX (Z) Output Itemld van het gecreëerde item Me PROGRAM LFSPH SPOS SRAD LFSPH Creëer een bol (sphere) Input SPOS Middelpunt van de BOL SRAD Straal van de BOL Output Itemld van het gecreëerde item P41ffJ PROGRAM LFRUL Cl C2 SNAME LFRUL Creëer een ruled object Input Cl Coördiriatenlijst beginprofiel C2 Coördinatenlijst eindprofiel SNAME Naam van resulterende Solid Output Itemld van het gecreëerde item

57 B november PROGRAM LFSWP PRF000RDS LENGTE LFDWP Creeer een sweep solid. Input PRFCOORDS Profiel loop beschrijving LENGTE Sweep lengte Output Id gecreeerd Item A.2 Geometrische hulp entiteiten PROGRAM MKCCV LOOP MKCCV Maak een Composite Curve aan de hand van een gegeven coördinatenloop Input LOOP List van coördinaten die tesamen een Composite Curve beschrijven Output Item-id van het gecreeërde CCV A.3 Hulproutines Het bereken van de afstand tussen twee items PROGRAM LFMEASURE IT1 1T2 LFMEASURE Berekeri de afstand tussen twee willekeurige items. Input IT1 Item Id van item 1 1T2 Item Id van item 2 Output Afstand Het bereken van de richtingsvector tussen twee posities PROGRAM LFDIRVEC POS1 POS2 LFDIRVEC Bereken de richtingsvector tussen twee posities Input POS1 Positie 1 POS2 Positie 2 Output Richtingsvector

58 B november Het bereken van de ongenormaliseerde riçhtingsvectpr tussen twee posities PROGRAM LFDIFVEC POS1 POS2 LFDIFVEC Berekeri de ongenormaliseerde richtingsvector tussen twee posities Input POS1 Positie 1 POS2 Positie 2 Output Ongenormaliseerde richtingsvector Het bereken van de normaalvector PROGRAM LFNORMVEC VEC LFNORMVEC Bereken de normaalvector uit een gegeven vector. Input VEC Vector Output Genormaliseerde vector Het maken van een kopie van een vector PROGRAM VECCOPY VEC VECCOPY Maak een kopie van een vector Input VEC Vector Output Gekopieerde vector Het berekenen van de 'absolute' afstand tussen twee posities PROGRAM VECDIST POS1 POS2 VECCOPY Bereken 'absolute' afstand tussen twee posities. Input P051 Positie 1 POS2 Positie 2 Output Absolute afstand Het bepalen van de lengte van een lijnvormig item

59 B november PROGRAM LFLENGTH ITEMID LFLENGTH Bepaal de lengte van een lijnvormig item Input ITEMID Item Id van item Output Lengte Het bepalen van het aantal elementen in een lijst PROGRAM LFLSTSIZE LISTVAR LFLSTSIZE Bepaal het aantal elementen in een lijst Input LISTVAR Lijst Output Aantal elementen in lijst Bereken het snijpunt tussen twee items PROGRAM CALCINT IT1 1T2 CALCINT Bereken het intersectie punt tussen twee willekeurige items. Input IT1 Item Id van item 1 1T2 Item Id van item 2 Output WCS Coördinaat Verwijderen van items PROGRAM DELITMS DITMS DELITMS Verwijder een item of een lijst items Input DITMS Item Id of een lijst met Item Ids Output Geen. Verwijderen van een item PROGRAM DELITM DITM DELITM Verwijder een enkel item. Note Het Item mag een Setltem zijn Input DITM Item Id Output Geen.

60 B november A.4 LEAFO ondersteunende functionaliteiten Initialiseren LEAFO-specifiek zaken PROGRAM INITLEAFOS INITLEAFOS Input Output Initialiseren LEAFO-specifieke zaken <geen> <geen> Initialiseren Oriëntatie PROGRAM INITMATRIX INITMATRIX Input Output Definieer een initiële transformatie matrix (eenheidamatrix). Deze matrix wordt gebruikt voor afbeelding van het topelement op het model coördinatensysteem en vormt de basis voor alle volgende transformatie matrices. <geen> Een 4x4 eenheidsmatrix Nieuwe Oriëntatie PROGRAM MAPON UMATRIX FUPOS FUORIENT LFCONNEC LFORIENT MAPON Bereken transformatie matrix voor het afbeelden van een element op het model coördinatensysteem en pas het Working Coordinate System hiermee aan. Input UMATRIX Tranaf. matrix bovenliggend element FUPOS Plaatsings positie FUORIENT Oriëntatie vectoren van de bovenliggend element LFCONNEC Connectiepunt van element LFORIENT Oriëntatie vectoren van element Output Transformatie matrix voor afbeelding op het model coördinatensysteem Bereken model coördinaat vanuit locale coördinaat

61 B november PROGRAM MDLPOS LFPOS MATRIX MDLPOS Bereken van een locale coördinaat het bijbehorende modelcoördinaat. Input LFPOS Locale coördinaat MATRIX Transformatie matrix voor afbeelding van het local coördinatensysteem op het model coördinatensysteem Output Model coördinaat

62 B november BIJLAGE B ONTWIKKELING GENERIEKE FORMULIEREN

63 B november Het domein voor generieke formulieren wordt op het moment ontwikkeld en is in figuur B. 1 weergegeven. Figuur B.1. Het PMsheIl domein voor generieke formulieren. Met de klasse UJ BOARD en de subklassen van de klasse UJ WIDGET kan een formulier worden gedefiniëerd. Dit formulier kan bestaan uit de volgende onderdelen: UJ_LABEL UJSYMBOL UI_BU1TON Een string die in het formulier wordt weergegeven en niet kan worden geselecteerd. Een logo dat in het formulier wordt weergegeven en niet kan worden geselecteerd. Een button die kan worden geselecteerd en die tot gevolg heeft dat het formulier wordt verlaten, maar niet wordt verwijderd.

64 B november UJFIELD UJSELSCROLL Een veld waarin een waarde kan worden ingevuld. De waarde kan worden doorgegeven aan een UJCOL_S CR011. Een scrolled list waarin items met de muis kunnen worden geselecteerd. De geselecteerde items kunnen worden gemarkeerd of kunnen worden doorgegeven aan een UJ_FIELD of aan een UICOLSCROLL. UICOLSCROLL Een scrolled list waarin items kunnen worden verzameld. De items kunnen afkomstig zijn van een UJ_FIELD en van een UISELSCROLL. Items kunnen worden verwijderd door de items met de muis te selecteren. UISWITCH UIGROUP Een schakelaar die 'aan' of 'uit' kan worden gezet. Als de schakelaar 'aan' wordt gezet kan dit tot gevolg hebben dat andere schakelaars 'uit' worden gezet en dat andere onderdelen van het formulier selecteerbaar of niet selecteerbaar worden gemaakt. Als de schakelaar weer 'uit' worden gezet heeft dit tot gevolg dat bovenstaande onderdelen van het formulier weer niet selecteerbaar of selecteerbaar worden gemaakt. Een groep van onderdelen die bij elkaar horen. Op deze manier kan bijvoorbeeld worden aangegeven dat een bepaald label bij een bepaald field moet worden geplaatst. In figuur B.2 zijn de stappen weergegeven die nodig zijn om een formulier te definiëren en te gebruiken. Een formulier moet zowel in Te1eUSE als in PMshell worden gedefiniëerd. In PMshell kan het gedrag van een formulier en in Te1eUSE kan de layout van een formulier worden vastgelegd. Het definiëren van een formulier gaat alsvolgt in zijn werk: - Start PMshell op. - Instantieer een root object voor het formulier zelf (stap 1 en 1'). - Instantieer een object voor elk onderdeel op het formulier en veeg dit object toe aan het root object (stap 1 en 1'). - Definieer afhankelijkheden tussen de onderdelen als relaties tussen de bijbehorende objecten (stap 1 en 1'). - Roep de define procedure aan van het root object (stap 2). - Sluit PMshell af. De aanroep van de define procedure heeft tot gevolg dat de definitie van een formulier aan de User Interface wordt doorgegeven. De User Interface zal vervolgens de layout van het formulier automatisch genereren (stap 3 en 3'), waarna met een eventueel aanwezige User

65 B november Interface builder de layout van het formulier kan worden verbeterd (stap 4 en 4'). PMsheII formdefinitie formaktivering \\\\ \PROTOCOL\\\\\ \\\ Figuur B.2. Het definiëren van een formulier met PMshelI en Te1eUSE. Nadat een formulier in PMshell is gedefinieerd en aan de User Interface is doorgegeven kan het formulier met behulp van de handle procedure worden gebruikt. Het activeren van een formulier gaat alsvolgt in zijn werk: - Start PMshell op. - Bewaar de status van een schakelaar, de default waarde voor een veld en de inhoud van een lijst door de bijbehorende objecten in te vullen. - Roep de handle procedure aan van het root object (stap 5). - Roep de remove procedure aan van het root object. - Bekijk de status van een schakelaar, de default waarde voor een veld en de inhoud van

66 L1D! november 1992 een lijst door de bijbehorende objecten uit te lezen. - Sluit PMshell af. De aanroep van de handle procedure heeft tot gevolg dat het formulier door de User Interface op het scherm wordt geplaatst (stap 6) en dat de gebruiker het formulier kan bekijken en invullen (stap 7). Nadat het formulier door de gebruiker is ingevuld kan het formulier worden verlaten (maar niet worden verwijderd) door op een van de buttons te drukken. De aanroep van de remove procedure heeft tot gevolg dat het formulier door de User Interface van het scherm wordt verwijderd. Per standaard onderdeel is er één cailback functie. Hierdoor hoeft de maker van een formulier niet voor elk onderdeel de bijbehorende cailback functie te implementeren. Hieronder wordt voor elke standaard onderdeel in het kort de werking van de cailback functie gegeven: labelcaliback: - symbolcallback: - buttoncaliback: - switchcallback: - fieldcallback: - sel_scrollcallback: - niet niet geef - geef - geef - geef - geef - geef zet - als - als voeg als nodig nodig OK terug de button id terug de id terug van elke switch die 'aan' staat de id en value terug van elk field de id en de markering terug van elke sel_scroll de id en de inhoud terug van elke col_scroll de switch om de switch nu 'aan' staat dan: - zet elke switch in de lijst deselecrs 'uit' - maak alle widgets in de lijst enables selecteerbaar - maak alle widgets in de lijst disables niet selecteerbaar de switch nu 'uit' staat dan: - maak alle widgets in de lijst enables niet selecteerbaar - maak alle widgets in de lijst disables selecteerbaar aan de col_scroll in het veld collects de waarde van het field toe de velden controls en collects leeg zijn dan: - als klik zonder SHIFT dan: - haal de markering weg - markeer de selectie - als dubbele kijk dan:

67 B november druk de button van het veld escapes in als het veld controls of het veld collects niet leeg is dan: - geef de field in het veld controls de waarde van de selectie of voeg aan de col_scroll in het veld collects de waarde van de selectie toe colscrollcallback: - verwijder de selectie De communicatie tussen PMshell en de User Interface gebeurt met behulp van protocol commando's. Voor het werken met generieke formulieren moet dit protocol worden uitgebreid met drie extra commando's. Deze commando's zien er alsvolgt uit: send: DEFINE_BOARD id group receive: RESCUE OK group = '(' ( group ) ') (' { label Id ) ') (' ( syrnbol Id ) ) ( { button id ) ) fieldid ) ) ( ( sel scroll id ) ) (' ( col scroll id ) ) Het DEFINE_BOARD commando geeft de definitie van een formulier door. Deze definitie bestaat uit een recursieve definitie van de groepen op een formulier. Elk formulier bestaat uit één groep. Elke groep kan bestaan uit een aantal andere groepen en uit een aantal onderdelen van het formulier. Bij het automatisch genereren van de layout van een formulier kan rekening worden gehouden met de verdeling van de onderdelen in groepen op het formulier. send: HANDLEBOARD boardid '(' ( switch ) ) ( ' 1 field ) ') ( ' ( selscroll ) ') receive: RESCUE OK buttonid '( ( switchid ) ) '(' ( fieldid value) ') ' sorollid ' ( ( item ) ') ' ) ') ' -- exit button -- OM switches -- field values -- scroll items switch = switchid ( ON / 0FF ( ( widget id } ') ' -- deselects '(' ( widget Id ) ) ' -- enables - 1' ( widget id ) ) ' -- disables

68 B november field = field id value (' [ col scroll id ] ) -- collects seiscroil = selscrollid '(' ( item ) ') '(' ( button_id ] ') ' -- escapes '(' [ field Id ] ') ' -- controls '(' [ col scroll id 1 ) -- collects Het HANDLE_BOARD commando geeft de informatie van een formulier door aan de User Interface. Deze informatie bestaat uit de status van de schakelaars, de default waarde voor de velden en de inhoud van de lijsten van een formulier. Daarnaast worden de afhankelijkheden tussen de onderdelen op een formulier doorgegeven aan de User Interface. Deze afhankelijkheden worden telkens als lijsten met identifiers bij de onderdelen meegegeven. Nadat de gebruiker het formulier heeft ingevuld, zal de User Interface de informatie van het formulier teruggeven. De teruggegeven informatie bestaat uit de schakelaars die 'aan' staan, de velden met hun waarde en de lijsten met hun inhoud. send: REMOVEBOARD Id receive: RESCUE OK ';' Het REMOVE_BOARD commando geeft de User Interface de opdracht om het formulier te verwijderen. In figuur B.3 is ter illustratie een model van het formulier DEFINE_FEATURE weergegeven. Dit formulier wordt gebruikt door de programmerende gebruiker van PMshell voor het invullen van de definitie van een feature bij een klasse. Het model is grafisch weergegeven in een schema techniek die bij het domein voor generieke formulieren is gedefinieerd. Een uitleg van deze schema techniek wordt in een vervolg studie naar de mogelijkheden van generieke formulieren opgenomen.

69 B november ftd?[nt BRD-DEFINE-FEATURE 1 c< IICELI cffff JT_ATTR!J}1E _BTN_a I1E NTRT BTN_CcEL ' BODY C PRPERY 1 GW_RJTI? 1 K') SW_OBJECT_1 '_Pt RTY_KIPI _PRc'[RTY_TY \ I FLIJ_.IENT SEL_PRFERT Figuur B.3. Een PMshell model van het formulier DEFINE_FEATURE.

70 B november BULAGE C EXPRESS SCHEMA VAN HET LEAFO DOMEIN

71 november SCHEMA loafo; REFERENCE FROM kernel; REFERENCE FROM library; ENTITY 1f parameter SUBTYPE OF (pmobject); END_ENTITY; -- entity 1f parameter ENTITY 1f leafobject SUBTYPE OF (prn object); statements: LIST 10 : 1/) OF 1f staternent; parameters: LIST [0 #] OF 1f forinal; position: 1f position; orientation: 1f orlentation; variables: LIST [0 : 1/1 OP 1f variable; status: STRING; DER IVE leafobjects: LIST [0 : #] OF 1f leafobject := lfleafobjectleafobjects (SELF); MESSA DES lfleafobjectinitialise; lfleafobjectaddparameter (act parameter: 1f formal); lfleafobjectdelpararneter (act parameter: 1f forma 1); lfleafobjectappendpararneters (act parameters: LIST [0 : #] OP 1f formal (*like parameters*) ); lfleafobjectdeleteparameters (act pararneters: LIST [0 : #] OF 1f formal (*like parameters*) ); lfleafobjectaddstatement (act staternent: 1f statement); lfleafobjectdelstatement (act statement: If_statement); lfleafobjectappendstatements (act statements: LIST [0 : #] OF 1f staternent (*like staternents*) ); lfleafobjectdeletestaternents (act statements: LIST [0 : #] OF 1f statement (*like s t a teme n t s *) ); 1 flea fobject qenera te; lfleafobjectaddvariable (act variable: 1f variable); lfleafobjectdelvariable (act variable: 1f variable); lfleafobjectappendvariables (act variables: LIST [0 : #] OF 1f variable (*like variables*) ); lfleafobjectdeletevariables (act variables: LIST [0 : #] OF 1f variable (*like variables*) ); 1 flea fobjecthide; 1 flea fobject show; END ENTITY; -- entity 1f leafobject ENTITY 1f stateïnent SUBTYPE OF (pmobject); leafobject: 1f leafobject; scope: 1f leafobject; position: 1f position; orientat 10fl: 1 f orientat 10fl; parameters: LIST [0 : #] OF 1f act ual; variables: LIST [0 : #] OF 1f variable; MESSAGES ifstaternentinitialise; lfstatementsetleafobject (act leafobject: 1f leafobject (*like leafobject*) ); ifstaternentsetscope (act scope: 1f leafobject (*like scope*) ); lfstatementgenerate (file: pmfile); lfstaternentaddparameter (act parameter: 1f actual); lfstatementdelparameter (act parameter: 1f actual); lfstatementclrpararneters; 1 fstatementhide;

72 november f statement show; lfstatementaddvariable (act variable: 1f variable); lfstatementdelvariable (act variable: 1f variable); 1 t st at enlent appendvari ables (act variables: LIST 1f variable (*ljke variables*) ); lfstateînentdel ete van ables (act variables: LIST 1f variable (*like variables*) ); END ENTITY; -- entity 1f staternent [0 : #] OF [0 : 4'] OF ENTITY 1f variable SUBTYPE OF (pmobject); scope: 1f leatobject; value: 1f expression; offset: 1f expression; MESSAGES 1f variable set value (act value: STRING); 1 f variableenter val ue; 1f variable select val ue; 1f variable set_offset (act_offset: STRING); 1 fvariableenteroffset; Ifvariablesetscope (act scope: 1f leafobject lfvariablegenerate_value (file: pmfile); lfvariableqenerate_offset (file: pmfile); Ifvariablehide; 1f variable show; END ENTITY; -- entity 1f variable (*like scope*) ); ENTITY 1f expression SUBTYPE OF (pmobject); expressiofl: STRING; MESSA DES lfexpressiongenerate (file: prn file); lfexpressionsetexpression (act expression: expression*) ); END ENTITY; -- entity 1f expression STRING (*like ENTITY 1f condition SUBTYPE OF (1f statement); test value: 1f expression; MESSA DES 1f condition set test value (act_test_value: STRING); 1f condit ion enter test val ue; END ENTITY; -- entity 1f condition ENTITY 1f iteration SUBTYPE OF (1f statement); start_value: 1f expression; stop_value: 1f expression; MESSA DES 1f iteration_set_start_value (act_start_value: STRING); 1f iteration enter start value; 1f iteration select start val ue; 1f iteration set stop value (act_stop_value: STRING); 1f iteration enter St op val ue; 1 t iteration select stop value; Ifiterationgenerate (file: pmfile); (*body redefined) END ENTITY; -- entity 1f iteration ENTITY 1f position SUBTYPE OF (1f variable); coordinate: INTEGER; MESSA DES

73 B november fpositionselectcoordinate; lfpositiongenerateoffset (file: prn file); (*body redefined) END ENTITY; -- entity 1f position ENTITY 1f orientation SUBTYPE OF (1f variable); END ENTITY; -- entity 1f orientation ENTITY 1f forrnal SUBTYPE OF (1f pararneter); END ENTITY; -- entity 1f formal ENTITY 1f actual SUBTYPE OF (1f variable, 1f pararneter); MESSA GES 1f actual generate value (file: pmflle); (*body redefined*) END ENTITY; -- entity 1f actual ENTITY 1f geornetry SUBTYPE OF (1f leafobject); MESSAGES 1 fqeometry generale; (*body re de fi n ed*) END ENTITY; -- entity 1f qeometry ENTITY 1f library SUBTYPE OF (1f leafobject); MESSAGES 1f librarygenerate; (*body redefined*) END ENTITY; -- entity 1f library FUNCTION lfleafobjectleafobjects ( 1f leafobject: 1f leafobject): LIST [0 : #J OF 1f leafobject; (* The body of this routine *) END FUNCTION; -- routine lfleafobjectleafobjects PROCEDURE lfleafobjectinitialise ( 1f Leafobject: 1f leafobject); (* The body of this routine *) END_PROCEDURE; -- routine lfleafobjectinitialise PROCEDURE lfleafobjectaddparameter ( 1f leafobject: 1f leafobject; act pararneter: 1f formal); (* The body of this routine *) END_PROCEDURE; -- routine lfleafobjectaddparameter PROCEDURE lfleafobjectdelparameter ( 1f leafobject: 1f leafobject; act parameter: 1f forrnal); (* The body of this routine *) END_PROCEDURE; -- routine 1f leafobjectdelparameter PROCEDURE lfleafobjectappendparameters (1f leafobject: 1f leafobject; act pararneters: LIST [0 : #] OF 1f forrnal (*like pararneters*) ); (* The body of this routine *) END_PROCEDURE; -- routine 1f leafobjectappendparameters PROCEDURE lfleafobjectdeletepararneters (1f leafobject: 1f leafobject; act parameters: LIST [0 : #] OF 1f formal (*like pararneters) ); (* The body of this routine *) END_PROCEDURE; -- routine 1f leafobjectdeleteparameters

74 B november PROCEDURE lfleafobjectaddstatement (1f leafobject: 1! leafobject; act statement: 1f statement); ( The body of this routine *) END PROCEDURE; -- routine 1f leafobjectaddstaternent PROCEDURE lfleafobjectdelstaternent (1f leafobject: 1f leafobject; act staternent: 1f staternent); ( The body of this routine *) END PROCEDURE; -- routine lfleafobjectdelstatement PROCEDURE lfleafobjectappendstaternents (1f leafobject: 1f leafobject; act statements: LIST 10 : #] OF 1f statement (*like statements) ); (* The body of this routine *) END_PROCEDURE; -- routine 1f leafobjectappendstatements PROCEDURE lfleafobjectdeletestaternents (1f leafobject: 1f leafobject; act statements: LIST [0 : #] OF 1f staternent (*like s tatements*) ); (* The body of this routine *) END_PROCEDURE; -- routine lfleafobjectdeletestatements PROCEDURE lfleafobjectgenerate (1f leafobject: 1f leafobject); (* The body of this routine *) END_PROCEDURE; -- routine 1f leafobjectgenerate PROCEDURE lfleafobjectaddvariable (1f leafobject: 1f leafobject; act variable: 1f variable); (* The body of this routine *) END_PROCEDURE; -- routine lfleafobjectaddvariable PROCEDURE lfleafobjectdelvariable (1f leafobject: 1f leafobject; act variable: 1f variable); (* The body of this routine *) END_PROCEDURE; -- routine 1f leafobjectdelvariable PROCEDURE lfleafobjectappendvariables (1f leafobject: 1f leafobject; act variables: LIST [0 : #] OF 1f variable (*like varjables*) ); (* The body of this routine *) END_PROCEDURE; -- routine lfleafobjectappendvariables PROCEDURE 1f1eafobjectde1etevarib1es (1f leafobject: 1f leafobject; act variables: LIST [0 : /I] OF 1f variable (*like variables*) ); (* The body of this routine *) END_PROCEDURE; -- routine 1f leafobjectdeletevariables PROCEDURE lfleafobjecthide (1f leafobject: 1f leafobject); (* The body of this routine *) END_PROCEDURE; -- routine 1f leafobjecthide PROCEDURE 1f leafobject show (1f leafobject: 1f leafobject); (* The body of this routine ) END_PROCEDURE; -- routine 1f leafobject show PROCEDURE 1f staternent initialjse (1f statement: 1f statement); (* The body of this routine *) END_PROCEDURE; -- routine Ifstaternentinitialise PROCEDURE lfstaternentsetleafobject (1f stateïnent: 1f staternent; act LEAFObject: 1f leafobject (*like leafobject*) ); (* The body of this routine *) END_PROCEDURE; -- rout mei f staternent set lea fob ject

75 TNO-apport B november PROCEDURE Ifstatementsetscope (1f statement: 1f statement; act scope: 1f leafobject (*like scope*) ); (* The body of this routine *) END PROCEDURE; -- routine ifstatementsetscope PROCEDURE lfstatementgenerate (1f scate,nent: 1f staternent; file: pin file); ( The body of this routine *) END_PROCEDURE; -- routine 1f statementgenerate PROCEDURE lfstatenientaddparameter (1f statement: 1f statement; act parameter: 1f actual); (* The body of this routine *) END_PROCEDURE; -- routine 1f statementaddparameter PROCEDURE lfstatementdelparameter (1f staternent: 1f stateinent; act parameter: 1f actual); (* The body of this routine *) END PROCEDURE; -- routine 1f statementdelparameter PROCEDURE lfstatementclrpararneters (1f staternent: 1f statement); (* The body of this routine *) END_PROCEDURE; -- routine 1f statementclrparameters PROCEDURE Ifstatementhide (1f staternent: 1f statement); (* The body of this routine *) END PROCEDURE; -- routine lfstatementhide PROCEDURE 1f staternent show (1f statement: 1f statement); ( The body of this routine *) END PROCEDURE; -- routine 1f statement show PROCEDURE lfstatementaddvariable (1f staternent: 1f statetnent; act variable: 1f variable); (* The body of this routine *) END_PROCEDURE; -- routine lfstatementaddvariabie PROCEDURE lfstaternentdelvariable (1f staternent: 1f staternent; act variable: 1f variable); (* The body of this routine *) END PROCEDURE; -- routine 1f statementdelvariable PROCEDURE lfstaternentappendvariables (1f staternent: 1f staternent; act variables: LIST [0 : II] OF 1f variable (*like variables*) ); (* The body of this routine *) END PROCEDURE; -- routine 1f statemetappendvariab1es PROCEDURE lf'staternentdeletevariabies (1f staternent: 1f staternent; act variables: LIST [0 : #] OF 1f variable (*like variables*) ); (* The body of this routine *) END PROCEDURE; -- routine 1f statementdeletevariables PROCEDURE 1f variable set value (1f variable: 1f variable; act_value: STR ING); (* The body of this routine *) END PROCEDURE; -- routine 1f variable set value PROCEDURE lfvariableentervalue (1f varjable: 1f variable); ( The body of this routine *) END PROCEDURE; -- routine 1f variable enter value PROCEDURE 1f variable select value (1f variable: 1f variable);

76 november (* The body of this routine *) END PROCEDURE; -- routine 1f variable select value PROCEDURE 1f variable set offset (1f variable: 1f variable; act_offset: STRING); (* The body of this routine *) END_PROCEDURE; -- routine 1f variable set of f set PROCEDURE lfvariableenteroffset (1f variable: 1f variable); (* The body of this routine ) END PROCEDURE; -- routine 1f variable enter offset PROCEDURE Ifvariablesetscope (1f variable: 2f variable; act scope: 1f Ieafobject (*like scope*) ); (' The body of this routine ) END_PROCEDURE; -- routine lfvariablesetscope PROCEDURE lfvariablegeneratevalue (1f variable: 1f variable; file: pin file); (* The body of this routine *) END_PROCEDURE; -- routine 1f variable generate value PROCEDURE lfvariablegenerateoffset (1f variable: 1f variable; file: pm file); (* The body of this routine *) END PROCEDURE; -- routine 1f variable generate offset PROCEDURE 1f variablehide (1f variable: 1f variable); (* The body of this routine *) END_PROCEDURE; -- routine 1f variablehide PROCEDURE 1f variable show (1f variable: 1f variable); (* The body of this routine *) END_PROCEDURE; -- routine 1f variable show PROCEDURE lfexpressiongenerate (1f expressic'n: 1f expression; file: pm file); (* The body of this routine *) END_PROCEDURE; -- routine 1f expressiongenerate PROCEDURE lfexpressionsetexpression (1f expression: 1f expression; act expression: STRING (*like expression*) ); (* The body of this routine *) END_PROCEDURE; -- routine lfexpressionsetexpression PROCEDURE 1f condition set test value (1f condition: 1f condition; act_test_value: STRING); (* The body of this routine *) END_PROCEDURE; -- routine 1f condition set test value PROCEDURE 1f condition enter test value (1f condition: 1f condition); (* The body of this routine *) END_PROCEDURE; -- routine 1f condition enter test value PROCEDURE 1f iteration set s tart value (1f iteration: 1f iteration; act_start_value: STRING); (* The body of this routine *) END PROCEDURE; -- routine 1f iteration set start value PROCEDURE 1f iteration enter start value (1f iceration: 1f iteration); (* The body of this routine *) END_PROCEDURE; -- routine 1f iteration enter start value

77 IIi:r.T? B november PROCEDURE 1f iteration select start value (1f iteration: 1f iteration); ( The body of this routine *) END_PROCEDURE; -- routine 1f iteration select start value PROCEDURE 1f iteration set stop value (1f iteration: 1f iteration; act stop value: STRING); (* The body of this routine *) END PROCEDURE; -- routine 1f iteration set stop value PROCEDURE 1f iteration enter stop value (1f iteration: 1f iteration); (* The body of this routine *) END PROCEDURE; -- routine 1f iteration enter stop value PROCEDURE 1f iteration select stop value (1f iteration: 1f iteration); (* The body of this routine *) END_PROCEDURE; -- routine 1f iteration select stop value (*body redefined*) PROCEDURE lfiterationgenerate (1f iteration: 1f iteration; file: pm file); (* The body of this routine *) END PROCEDURE; -- routine 1f iterationgenerate PROCEDURE lfpositionselectcoordinate (1f position: 1f position); (* The body of this routine *) END PROCEDURE; -- routine lfpositionselectcoordinate (*body redefined*): PROCEDURE lfpositiongenerateoffset (1f position: 1 fposition; file: prn file); (* The body of this routine *) END_PROCEDURE; -- routine lfpositiongenerate offset (*body redefined*): PROCEDURE 1f actual generate value (1f actual: 1f actual; file: pîn file); (* The body of this routine *) END PROCEDURE; -- routine 1f actual generate value (*body redefined*): PROCEDURE lfgeornetryqenerate (1f geoînetry: 1f geornetry); (* The body of this routine *) END_PROCEDURE; -- routine 1f geometrygenerate (*body redefined*): PROCEDURE lf library generate (1f library: 1f library); (* The body of this routine *) END_PROCEDURE; -- routine 1f librarygenerate END_SCHEMA; -- schema leafo

78 B november BIJLAGE D DOCUMENTATIE VAN HET LEAFO DOMEIN

79 B november D. 1 DOMAIN_INTERFACE class interface DOMAIN INTERFACE exported features Id, current classes inherit PM_ INTERFACE feature specification Crea te end interface -- class DOMAIN INTERFACE D. 2 LEAFO INTERFACE ciass interface LEAFO INTERFACE exported features repaat PM INTERFACE inherit PM INTERFACE feature specification Crea te end interface -- class LEAFO INTERFACE D.3 LFACrUAL claas interface LF_ACTUAL exported features Id, scope, value, offset, setvalue, enter value, select_value, setoffset, enter offset, setscope, generate offset, hide, show, generate value inherit LF VAN IABLE ren ame generate value as lfvageneratevalue redefine genera te_value; LF PARAME TER feature specificat ion

80 B november Create (act Id: STRING) generate value (file: like generate val file) -- No comment. require min card file: not file.void ; -- preconditions ons ure -- postconditions end interface -- ciass LFACTUAL D.4 LF_coNDmoN class interface LFCONDITION exported features id, lea [object, scope, position, orientation, parameters, variables, initial ise, set lea [object, setscope, generate, addparameter, delparameter, cirparameters, hide, show, add_ vaz- iable, del van able, append van abi es, deletevaniables, testvalue, set test value, enter test_value inherit LFSTATEMENT feature speci fication Create (actid: STRING) test_val ue: LFEXPRESSION -- No comrnent. set_test_value (act_test_val ue: like set test val act test val) -- No comment. requ ire -- preconditions ensure test value.expression.equal (act_test_value); enter test value -- No comment. requira -- preconditions ensure -- postconditions end interface -- ciass LF'CONDITION D.5 LF_EXPRESSION clasa interface LF_EXPRESSION exported features Id, expression,

81 B november generate, set expression inherit PM OBJECT feature specification Cz- eate (act Id: STRING) expression: STRING -- No comment. generate (file: like generate file) -- No comrnent. require min card file: not file.void ; -- precondittons onsure -- postconditions set expression (act expression: like set expressi act expressi) -- No comrnent. requ ire -- preconditions ons ure expression.equal (act expression); end interface -- ciass LFEXPRESSION D.6 LF_FORMAL class interface LFPORP4AL exportod features Id inherit LE PARAME TER feature specificat ion Create (act Id: STRING) end interface -- ciass LFFORMAL D.7 LF_GEOMETRY clasa interface LEGEOMETRY exported features id, statements, parameters, position, orientation, variables, status, leafobjects, initialise, addparameter, delparamet er, appendparameters, deleteparamet ers, addstaternent, delstatement, appendstaternents, deletestaternents, addvariable, delvariable,

82 B november 1992 M appendvariables, deletevariables, hide, show, generate inherit LF LEAFOBJECT ren ame generate as 1f legenerate redefine generate feature apecification Create (act Id: STRING) generate -- No cornment. require -- preconditions ensure -- postconditions end interface -- ciass LFGEOMETRY D.8 LF_ITERATION class interface LFITERATION exported features id, leafobject, scope, position, orientation, parameters, variables, initialise, set lea [object, set scope, addparameter, delparameter, clrparaîneters, hide, show, addvariable, del variable, append variables, deletevariables, generate, start value, stop_value, set start value, enter start val ue, select start value, setstopvalue, enter stop value, select_stop_value inherit LP STA TEMENT ren ame generate as 1f st generate rede f me generate feature specification Create (act Id: STRING) start value: LF EXPRESSION -- No comment. stop value: LFEXPRESSION -- No comment. set_start_value (act start value: like set start va act start va) -- No comment. requ ire

83 B november preconditions ons ure start value.expression.equal (act start value); enter start value -- No comment. require -- preconditions ensure -- postconditions select_start_value -- No comment. require -- preconditions ons ure -- postconditions set_stop_value (act_stop_value: like set stop val act stop val) -- No comment. requ ire -- preconditions ons ure stop value.expression.equal (act_stop_value); enter_st op_value -- No corsment.. r e qui r e -- preconditions ensure -- postconditions select_stop_value -- No comrnent. requ ire -- preconditions ons ure -- postconditions generale (file: like generate file) -- No comment. requ ire min card file: not file.void -- preconditions ensure -- postconditions end interface -- class LFITERATION D.9 LF_LEAFOBJECT clasa interface LF_LEAFOBJECT exported features id, statements, pararnecers, position, oz - ientation, variables, status, leafobjects, initialise, addparameter, delparameter, appendpararneters, deleteparameters, addstatement, delstatement, appendstaternents, deletestatements, generate, addvariable, delvariable, appendvariables, deletevariables,

84 B november hide, show inharit P4 OBJECT feature specification Create (act Id: STRING) statements: MULTIPLE [LF'STATEMENT] -- No cornment. parameters: MULTIPLE [LEFORMAL] -- No cornrnent. position: LFPOSITIQN -- No comrnent. orientation: LFORIENTATION -- No comment. variables: MULTIPLE [LF'VARIABLE] -- No comment. status: STRING -- No comment. leafobjects: like leafobjectsresult -- No comment. r e qui r e -- preconditions ens ure -- postconditions mi tialise -- No cornment. require -- preconditicns ens ure postconditions addparameter (act paralneter: like add pararnet eactparamete) -- No comment. require rnincardactparameter: not act pararneter.void not parameters.has (act parameter); ans ure parameters.has (act parameter); parameters.count = old pararneters.count + 1; delparameter (act parameter: like delpararneteactparamete) -- No comment. require rnincardactpararneter: not act parameter.yoid ; pararneters.has (act paralneter); ons ure not pararneters.has (act pararneter); pararneters.count = old pararneters.count - 1; appendparameters (act paralneters: like appendparaînactparamete) -- No cornoent. requ Ir e

85 B november not act parameters void: not act parameters.void -- preconditions enaure -- postconditions deleteparameters (act paraîneters: like deletepararn act paramete) -- No comment. requ ire not act paz- ameters void: not act parameters.void ; -- preconditions ens ure -- postconditions addstatement (act statement: like add stat enen act staternen) -- No comrnent. require min card act staternent: not act staternent.vojd ; not statements.has (act statement); ensure statements.has (act statement); statements.count = old staternents.count + 1; act staternent.scope = Current; deistaternent (act statement: like delstateînenactstatejnen) -- No coornent. require înincardactstaternent: not act statement.void ; staternents.has (act staternent); ensure not statements.has (act statement); statements.count = old statements.count - 1; appendstatements (act staternents: like appendstate_actstatemen) -- No comment. r e qui r e not act statements void: not act staternents.void ; -- preconditions ens ure postconditions deletestaternents (act staternents: like deietestateactstate,nen) -- No comment. r e qui r e not act staternents void: not act statements.void ; -- preconditions ensure -- postconditions generate -- No cornrnent. require -- preconditions ens ure -- postconditions addvariable (act variable: like addvariabieactvariable) -- No comment. raquire min card act vaciable: not act variabie.vojd ; not variables.has (act variabie); ens ure variabies.has (act variabie); variabies.count = old variabies.count + 1;

86 TNO-apport B november act variable.scope = Current; de? variabie (act variabie: like de? variable act variable) -- No comment. require rnincardactvariabie: not act variable.void ; variables.has (act variabie); ens ure not variables.has (act variable); variabies.count = old variabies.count - 1; appendvariabies (act variabies: like append varia act variabie) -- No comment. require not act variabies void: not act variabies.void ; -- preconditions enaure -- postconditions deiete variabies (act variables: like delete varia act van abie) -- No comment. raquire not act vaniables void: not act variables.void ; -- preconditions ensure -- postconditions hide -- No comment. require -- preconditions ensuro status.equai ("HIDE"); show No comment. require -- preconditions ens ure status.equal ("SHOW); end interface -- ciass LFLEAFOBJECT D.10 LF_LIBRARY class interface LFLIBRARY exported features id, staternents, paranleters, position, orientation, variabies, status, ieafobjects, initialise, addparameter, de? pararneter, appendparameters, deietepararneters, addstaternent, de? statement, appendstatements, deietestateinents, addvaniabie, de? vaniable, appendvaniables, deletevaniabies, hide, show, gen era te inherit LFLEAFOBJECT ren ame

87 B november generate as 1f le generate redefine gen era te feature specification Create (act Id: STRING) generate -- No comment. require -- preconditions ensure -- postconditions end interface -- ciass LFLIBRARY D. 11 LF_ORIENTATION claas interface LF'ORIENTATION exported featurea id, scope, value, offset, set value, enter value, select value, setoffset, enter offset, setscope, generate value, generate offset, hide, show inherit LE VARIABLE feature specification Create (actid: STRING) end interface -- ciass LFORIENTATION D. 12 LF_PARAMETER class interface LFPARAMETER exported features Id inherit PM OBJECT feature specification Create (act Id: STRING) end interface -- ciass LF'PARAMETER

88 B november D.13 LF_POSITION class interface LFPOSITION exported features id, scope, value, offset, set value, enter value, select value, setoffset, enter_offset, set scope, generate value, hide, show, generate offset, coordinate, select coordina te inherit LF VARIABLE ren ame generate offset as lfvagenerateoffset redefine gen erate offset featura specification Create (act Id: STRING) coordinate: INTEGER -- No comment. select coordinate -- No comment. require -- preconditions ens ure -- postconditions generate offset (file: like generate off file) -- No cornment. require min card file: not file.void -- preconditions ensure -- postconditions end interface -- ciass LFPOSITION D.14 LF_STATEMENT class interface LESTATEMENT exported features id, leafobject, scope, position, orientation, parameters, variables, initialise, set leafobject, set scope, generate, addparameter, delparameter, clrpararneters, hide, show, add_ variable, dol variable, appendvari ables, deletevariables inherit PMOBJECT

89 november featura specification Create (act Id: STRING) leafobject: LFLEAFOBJECT No comrnent. scope: LFLEAFOBJECT -- No cornment. position: LFPOSITION -- No comrnent. orientation: LFORIENTATION -- No comrnent. pararneters: MULTIPLE [LF'ACTUAL] -- No comment. variables: MULTIPLE [LEVARIABLE] -- No coernent. initialise -- No comment. requ ir e -- preconditïons ens ure scope.void or orientation.scope = scope) also (position.scope = scope a n d set leafobject (act leafobject: like set leafobje act leafobje) -- No comment. require min card act leafobject: not act leafobject.void ; -- preconditions en sure leafobject = act leafobject; set scope (act scope: like set scope act scope) -- No comment. require min card act scope: not act scope.void ; -- preconditions onsure scope = act scope; generate (file: like generate file) -- No comrnent. require min card file: not file.void -- preconditions ons ure postconditions addparamneter (act parameter: like addpararneteactparamete) -- No conrnent. require min card act pararneter: not act parameter.void not parameters.has (act paramneter); ensure parameters. has (act pararneter);

90 B november parameters.count = old pararneters.count + 1; act parameter.scope = scope; deipararneter (act parameter: like deiparameteactparaînete) -- No comment. require min card act parameter: not act parameter. Void ; parameters.has (act parameter); ensure not parameters.has (act parameter); parameters.count = old pararneters.count - 1; ci rpa ramet ers -- No comment. requ ire -- preconditions ensure pararneters. empty; hide -- No comrnent. require -- preconditions ensure -- postconditions show -- No comment. raqu ire -- preconditions ens ure -- postconditions addvariabie (act variabie: like addvariabieactvariabie) -- No comrnent. r e qui r e min card act variabie: not act variabie.void not variabies.has (act variabie); ens ure variabies.has (act variable); variabies.count = old variabies.count + 1; act variable.scope = scope; del variabie (act variabie: like delvariabieactvariabie) -- No comment. require min card act variabie: not act variabie.void ; variabies.has (act variabie); ensure not variabies.has (act variable); variables.count = old variabies.count - 1; appendvariables (act variables: like append varia act variabie) -- No comment. require not act variabies void: not act variabies.void -- preconditions ens ure -- postconditions deietevariabies (act variabies: like deiete varia act variabie) -- No comrnent. r eq u i r e

91 november not act variables void: not act variables.void ; -- preconditions ons ure -- postconditions end interface -- ciass LFSTATEMENT D.15 LF_VARIABLE class interface LF'VARIABLE exported features Id, scope, value, offset, setvalue, enter value, select_value, setoffset, enter offset, set scope, generate value, generate offset, hide, show inherit PM_ OBJECT feature specificat ion Create (act Id: STRING) scope: LFLEAFOBJECT No comment. val ue: LFEXPRESSION -- No comment. offset: LFEXPRESSION -- No comment. set_value (act_value: like set_value_act_value) -- No comment. requ 1 re -- preconditions ons ure value.expression.equal (act_value); en ter_value -- No comrnent. require -- preconditions ens ure -- postconditions select_value -- No comrnent. raquire -- preconditions ons ure -- postconditions set_offset (act_offset: like set_offset_act_offset) -- No cornment. requira -- preconditions ons ure

92 B november offset.expression.equal (act offset); enter offset -- No comment. require -- preconditions ensure -- postconditions set scope (act scope: like set scope act scope) -- No cornment. require rnincardactscope: not act scope.void -- preconditions ens ure scope = act scope; generate value (file: like generate val file) -- No comment. require min card file: not file.void -- preconditions ensure -- postconditions generate offset (file: like generate off file) -- No comment. require min card file: not file.void ; -- precondttions ens ure -- postconditions hide -- No cornrnent. require -- preconditions ensure -- postconditiens show -- No oornrnent. require -- preconditions ensure -- postconditions end interface -- ciass LF'VARIABLE

93 B november BULAGE E STEP PHYSICAL FILES

94 II november S TEP; HEADER; FILE IDENTIFICATION(LEAFO.STEP', ', H, ('TNO Building and Construction Research', 'Department of Computer Integrated Construction'), 'STEP VERSION 1.0 1, '', ' PMshell v0.9 1 ); FILE DESCRIPTION(''); IMPLE VEL END SEC; DA TASEQ; /* This section is generated especially for PMshell and used to specify the order in which the attributes of each entity will be given in the data sect i en. This section will be ignored by other applications because it outside the legal header and data sect i ons PM OBJECT(id,cgex, cgey); PM FILE(id,cgex, cgey); LE PARAME TER (id, cgex, cgey); LFLEAFOBJECT(id,cgex,cgey,statements,parameters,position,orientation,v ariables, status); LFSTATEMENT(id,cgex, cge y,leafobject, scope,position, orientation,paramet ers, variables); LFVARIABLE(id, cgex, cgey, scope, value, offset); LFEXPRESSION (id, cgex, cgey, expression); LF CONDITION(id,cge x,cge y, lcafobject,scope,position, orientation,paramet ers, variables, test_value); LFITERATION(id,cgex,cgey,leafobject,scope,position, orientation,paramet ers,vari ables,start value, stop value) ; LFPOSITION(id, cgex, cgey, scope, value, offset, coordinate); LFORIENTATION(id, cgex, cgey, scope, value, offset); LF FORMAL(id,cgex, cgey); LF ACTUAL(id,cgex, cgey, scope, value, offset); LFCEOMETRY(id, cgex, cgey, statements,parameters,position, orientation, var iables, status); LFLIBRARY(Id, cgex, cgey, statements,parameters,position, orientation, van ables, status) ; PMDOMAIN(id, objects); END_DA TASEQ; (#2,#3,#4,#5,#6,#7,#8,#9,#10,#11,#12,#13,#14,#l5,#16, #1 7, #1 8, #1 9)) 'DAMWAND', - 18,28, (#20), (#9, #8, #4, #5, #6, #7, #1 6, #1 7), #21, #22, (#23, #24, #25, #26, #2 7, #28, #29,#30), 'MERK', -515, - DAM WAND HB1 ',80, 'DAM WAND HOl ',268, ( 'DAM WAND HB2 1, 320, FORMAL('DAM WAND ( 'DAI4 WAND KR', -249, 'MERK HBI ',-837, 'MERK HOl ',-631, ( 'MERK HB2 ', -808, -252);

95 B november , FORMAL('MERK HG', -716, FORMAL('MERK NR PLANKEN', -855, 7-LF FORMAL ('DAMWAND BA ('MERK AP', -399, -742); 01 9=LF FORMAL ('MERK HA', -572, -769); 020=LFITERATION( 'IT MERK', - 37, 40, /13, /12, #33, /134, (#35, #36, #37, 1/38, /139, #40, /141, /142), (1/43, /144, /145, /146, /14 7), /148, -29, -542, /12, #50,, 0); (/22=LFORIENTATION('DAMWANDOTN', 239, VARIABLE ('BREEDTE PLANK', 103, -524, /12, 'NR PLANKEN IN MERK', -178, -362, 1/2, VARIABLE( 'LENGTE KROMME', 43, -592, 1/2, -316, #2, VARIABLE('LENGTE MERK', 191, VARIABLE ( 'NR MERKEN', -111, -518, /12, 'OFFSET HB', -1, -1,1/2, -1, -1, #2, /13, 'MERK OTN', -51,874,1/3, POSITION('IT MERK PSN', -133, -166, /12,1/62, ORIENTATION('IT MERK OTN', -176, -43, #2, #64, 'IT MERKNR PLANKEN', 58, -145, /12, 'IT MERK HG', -50, -137, /12, /167, ',99,11,#2,#69, 'IT MERK 801 ',-228, -106, #2, #71, ACTUAL('IT MERK HB2 ',153, -108, /12, /173, 'IT MERK H02 ',180, -29, /12, 'IT MERK HA', -1, -1, #2, /12,, ( HLP CR0', -91, -47, #2, 1/82, VARIABLE('NEW PSN', -220, -185, /12, 'IT MERK STOP', -1, -1, NR -1, -1, '(0,0,0) '((1,0,0), (0,0,1))'); 052-LF EXPRESSION('BREEDTE PLANK VALUE', -1, -1, '500'); 053=LE EXPRESSION('NR PLANKEN IN MERK VALUE', -1, -1, 'LENGTE_KROMME_VALUE', -1, -1, 'LFLENGTH 'LENGTE_KROMME EXPRESSION('LENGTE MERK VALUE', -1, -1, NR PLANKEN IN MERK * BREED TE NRPLANKEN MR PLANKEN IN VALUE', -1, -1, '(DAMWAND HB2 - DAMWAND HBI) / VALUE', -1, -1, '(DAMWAND DAMWAND 1101) / NR '((l,o,o),(o,o,l)) MERK PSN VALUE', -1, -1, 'OLD PSN OFFSET', -1, -1, EXPRESSION('IT MERK OTN VALUE', -1, -1, '(OIR VEC, (0,0,1)) 065=LF EXPRESSION('IT MERK OTN OFFSET', -1, -1, '(DIR VEC, (0,0,1)) 'IT MERK NR PLANKEN VALUE', -1, -1, VALUE', -1, -1, '');

96 november 1992 'DAMWAND HB1 + (1-1) EXPRESSION('IT MERK HB1 OFFSET', -1, 'DAMWAND HOl + (1-1) OFFSET EXPRESSION('IT MERK HOl OFFSET', -1, -1, 'DAMWAND HB1 + 1,-1,-1, - 1, 'DAMWAND HOl + 1 * EXPRESSION(IT MERK H02 OFFSET', -1,-1, - 1, '(2,4) VALUE', -1, -1, -1, -1, 'NEW PSN + LFDIFVEC OLD PS1 NEW VALUE', -1, -1, 'STARTPOINT OFFSET', -1, -1, 'NEW EXPRESSION('HLP_CRC_ VALUE', -1, -1, 'LFCRC OLD PSN LENGTE -1, -1, 'LFCRC OLD PSN 'NEW PSN VALUE', -1, -1, 'CALCINT DAMWAND KR OFFSET', -1, -1, 'CALCINT DAMWAND_KR HLP_CRC 'LFDIRVEC OLD PSN -1, -1, LFDIRVEC OLD PSN NEW PSN'); END SEC; ENDSTEP; E.2 MERK S TEP; HEADER; FILE IDENTIFICATION('LEAFO.STEP, ' ', H, ('TNO Building and Construction Research', 'Department of Computer Integrated Construction'), 'STEP VERSION 1.0 1, '', ' PMShell vo.9'); FILE DESCRIPTION(''); IMP_LE VEL (''); END SEC; DA TA_ SEQ; /* This section is generated especially for PMshell and used to specify the order in which the attributes of each entity will be given in the data sect i on. This section will be ignored by other applications because it outside the legal header and data sect i ons PM OBJECT(id,cgex, cgey); PM FILE(id,cgex, cgey); LFPARAME TER (id, cgex, cg(--y); LFLEAFOBJECT(id,cgex,cgey,statements,parameters,position,orientation,v ariables, status); LFSTATEMENT(id,cgex,cgey, leafobject,scope,position, orientation,paramet ers, variables); LF VARIABLE(id,cgex, cgey, scope, value, offset); LFEXPRESSION(id, cgex, cgey, expression); LF'CONDITION(id, cgex, cgey, leafobject, scope,position, orientation,paramet ers, variables, test_value); LFITERATION(id,cgex,cgey, leafobject,scope,position, orientation,paramet

97 B november ers,variables,startvalue,stopvalue); LF POSITION(id,cgex, cgey, scope, value, offset, coordinate); LFORIENTATION(id, cqex, cgey, scope, value, offset); LFFORMAL (id, cgex, cgey); LFACTUAL (Id, cgex, cgey, scope, value, offset); LF'GEOMETRY(id,cgex,cgey,staternents,parameters,position,orientation,var lables, status) ; LF'LIBRARY(id, cgex, cqey, stat ernents,pararneters,position, orientation, van ables, status); PMDOMAIN (id, object s); END DATA SEQ; (#2, #3, #4, #5, #6, #7, #8, #9, #10, #ll, #12, #13, #14, #15, #16 #1 7, #18, fl9, #20, #21, #22, #23)) 'MERK', - 410,218, (#24, #25, #26, #27), (#8, #7, #3, #4, #5, #6, #23, /122), /128, /129, (#30, /131, /13 2,#33,#34,#35,#36,#37,#38,#39,#40), 'SHOW'); 93-LFFORMAL ('MERK HB1 ', -505, ('MERK_HOl ('MERK HB2', ('MERK 802 1, - 283, 7=LF F'ORMAL ('MERK HG', -366, 'MERK NR PLANKEN', -569, (#41), (#1l),#42,#43,Q, (/144), (#12), #45, #4 6,, ( 'GORDING LENGTE',-130, , - ( 'LPSTDPLANK TYPE', -1459, H, 7=LF FORMAL ( 'LFS TDGORDING (#20, #21), #4 7, #48, 0, ('ANKER_LENGTE', -148, 992); 821 =LF PORMAL ('ANKER_DIAMETER', -367, -116, ( 'MERK AP', -123, (/151), (#52,#53, #54,#55), #56, #57) #58,#59, (#60), #10,#2, #61,#62, (/163), 'MERK PSN', -229, 156, #2, /170,, /12, VARIABLE('BREEDTE PLANK', 43, -98, 1/2, VARIABLE('DIEPTE PLANK', 88, -38, /12, /173,); (d32_-lf VARIABLE('DIKTE SLUITING', 92, 69, #2, -23, -92, #2, 1,-116,281,#2, /12, VARIABLE('LENGTE ANKER', -96, -74, /12, VARIABLE('NR ANKERS',189, 77, /12, 38,210, /12, ('DIKTE STOELPLAAT', -39, 265, /12, 1,-187,230, #2, /182,); 041=LFSTATEMENT('STLFSTDPLANK',1013,432,#13,#9,#83,#84,(#85,#86), 1, 1104, 138, /19, #87,, PLANK OTN', 1042, 65, #9, -745,- 296, /116, /110, /189, /190, (/191, /192), 1,667,637, /110, /193,, -567,-640,#10, /194,);

98 B november ,-1, #19, POSITION('IT PLANK PSN', 300, -55, #2, #97, #98, 'IT PLANK OTN',242, -95, #2, #99, #1 ACTUAL(IT PLANK LENGTE ',229,83, #2, #101, 185, #2, 1/2, #105, #2,#107, - 1, '1 EXPRESSION('IT PLANK STOP', -1, -1, 'MERK NR 'ST BOVENGORDING PSN', -350, 66, 1/2, 1/109,, 0); 059-LFORIENTATION('STBOVENGORDINGOTN', -339,10, #2, ('ST BOVENGORDING LENGTE', -253, -59, #2, -238, -162, #2, 1/112,, ORIENTATION('ST ONDERGORDING OTN', -56, -238,1/2,1/113,); 063=LFACTUAL('STONDERGORDINGLENGTE', -121, ACTUAL('IT ANKER LENGTE',25, #2, '1 EXPRESSION('IT ANKER STOP', -1, -1, 1 (0,0,0), EXPRESSION('DIEPTE PLANK VALUE', -1, -1, EXPRESSION('DIKTE SLUITING VALUE', -1, -1, '56'); 075=LFEXPRESSION('LENGTEGORDINGVALUE',-1,-1, 'MERK NR PLANKEN BREEDTE_PLANK'); 076=LF EXPRESSION('DIAMETER ANKER VALUE', -1, -1, EXPRESSION('LENGTE ANKER VALUE', -1, -1, EXPRESSION( 'NRANKERS VALUE', -1, -1, 'LFLSTSIZE 'HOOGTE ANKERSTOEL VALUE', -1, -1, VALUE', -1,-1, EXPRESSION(DIKTE MOER VALUE', -1,-1, POSITION('ST LFSTDPLANK PSN', 1156,280, #9, 1/120,, ACTUAL('STLFSTDPLANKTYPE',1173,354, 1/9, ACTUAL('ST LFSTDPLANK LENGTE', 1115,405,1/9, VALUE', -1, -1, '(0,0,0) 1 ((0,0,1), (1,0,0)) 1 ); -796,-520, TYPE', -713, -508, #1O, ( 'ST LFSTDGORDING LENGTE',-834, -403, 1/10, VALUE', -1, -1, 1 ((0,0,1), VALUE', -1, -1, '(0,0,0) 1 ((1,0,0), (0,0,1)) 1 '((BREEDTE_PLANK 2), (DIEPTE_PLANK / 2),MERK HB1) 'ITPLANKPSN + (BREEDTE_PLANK, 0, OFFSET MB) '((0,0,1), (1 1 0,0)) 1 '(- (ITPLANKOTN 1), (IT PLANK OTN 2)) '); 0101=LF EXPRESSION('IT PLANK LENGTE VALUE', -1, -1, 'FLIP * PLANK LENGTE OFFSET', -1, -1, 03=LF EXPRESSION ('OFFSET HB VALUE', -1, -1, ' (MERK HB2 - MERK HB1) MERK NR PLANKEN'); La104=LFEXpRESSION('OFFSETH9VALUE',-1, -1, ' (MERK_H02 - MERK HOl)

99 B november MERK NR EXPRESSION('LENGTE PLANK VALUE', , 'MERK HB1 - MERK =LF EXPRESSION( I LENG TE PLANK OFFSET', -1, -1, 'LENGTE PLANK + OFFSET_HB - OFFSET '-1 EXPRESSION('FLIP 09-LF EXPRESSIQN( 'ST BOVENGORDING PSN VALUE', -1, -1, '(0,- (BREEDTE GORDING / 2) - (DIKTE SLUITING / 2),MERKHG + 2 * DIAMETER ANKER) '); (di 1 0=LF EXPRESSION ( 'ST BOVENGORDING OTN VALUE', -1, ' ( 0 1 0,0), (0,0,1)) ') LENGTE VALUE', -1,- 1, 'LENGTE VALUE', -1, -1, '(0,- (BREEDTE GORDING / 2) - (DIKTE_SLUITING / 2),MERKHG - 2 * DIAMETER ANKER) '); La113LFEXPRESSI0N('STONDERGORDINGOTN VALUE', -1, -1, '((1,0,0), (0,0,- 1)) '); =LF EXPRESSION( 'ST ONDERGORDING LENGTE VALUE', -1, - 1, 'LENGTE - 1, '((MERKAP 1) * BREEDTE_PLANK,- (BREEDTE GORDING / 2) - (DIKTE_SLUITING / 2),MERK_HG) -1, '((O,MERKHA MERK_HA), EXPRESSION('IT ANKER LENGTE VALUE', -1, -1, 'LENGTE_ANKER'); (dl 1 9=LF EXPRESSION( 'IT_ANKER_DIAMETER_VALUE', -1, -1, VALUE', -1, -1, '(0,0,0) '((1,0, 0), 'ST LFSTDPLANK LENGTE VALUE', -1, -1, VALUE', -1, -1, '(0,0,0) EXPRESSION('ST LFSTDGORDING OTN VALUE', -1,- 1, 1 ((1,0,0), (0,0,1)) -1, -1, 7=LF EXPRESSION( 'ST LFSTDGORDING LENGT VALUE', -1,- 1, 'GORDING LENGTE'); ENDSEC; ENDSTEP; E.3 ANKER STEP; HEA DER; FILE IDENTIFICATION('LEAFO.STEP', ' ', I, ('TNO Building and Construction Research','Department of Computer Integrated Construction'), 'STEP VERSION 1.0 1,'', 'PMshell vo.9'); FILE DESCRIPTION(''); IMPLEVEL(''); END SEC; DATA SEQ; 7* This section is generated especially for PMshell and used to specify the order in which the attributes of each entity will be given in the data sect i on. This section will be ignored by other applications because It outside the legal header and data sect ions

100 B november PMOBJECT(id, cgex, cgey); PMFILE (id, cgex, cqey); LE PARAME TER (id, cgex, cgey); LFLEAFOBJECT(id,cgex,cgey,staternents,parameters,position,orientation,v ariables, status); LESTATEMENT(id,cgex,cqey, leafobject,scope,position, orientation,paramet ers, variables); LE VARIABLE (Id, cgex, cgey, scope, value, offset); LF EXPRESSION(id,cgex, cgey, expression); LFCONDITION(id, cge x,cge y,leafobject,scope,position, orientation,pararnet ers,variables,test value); LFITERATION(id,cgex,cgey,leafobject, scope,position, orientation,pararnet ers,variables,startvalue,stopvalue); LF POSITION(id,cgex, cgey, scope, value, offset, coordinate); LFORIENTATION(id, cgex, cgey, scope, value, offset); LF FORMAL(id,cgex, cgey); LEACTUAL (id, cgex, cgey, scope, value, offset); LFGEOMETRY(id,cgex,cgey,stateînents,pararneters,position,orientation,var iables, status); LFLIBRARY(id,cgex,cqey,statements,parameters,position,orientation,vari ables, status) ; PMDOMAIN (id, object 5); END DA TA_ SEQ; (#2,#3,//4,#5,#6,#7,#8,#9,#l0,#ll,#l2,#l3,#l4,#l5,#16 #1 7, #18, #19, #20, #21, #22, #23, #24, #25, #26, #27)) 720, (#28, #29,#30, #3l,#32), (#3,#24),#33,#34, (#35, #36, #37, #38, #39), ('ANKER LENGTE',1140, (#40), (#6,#5),#4l,#42, H, ('STANG LENGTE ('STANG DIAMETER', (#43), (#8),#44,#45, H, ( 'GROUT STRAAL', (#46), (#18),#47,#48, H, (#49), (#19), #50, #51, H, (#52), (#20), #53, #54, 0, 0, (#15),,, 0, (#16),,, ), 11 0, (#17),,, 0, 11 'LFSTDMOER DIAMETER',1190, -530); 61 6=LF FORMAL ( 'LFS TDASTOEL DIAMETER ',2190, -530); 61 7=LF FORMAL ( 'LFSTDSTOELP DIAME TER ', 1690, B=LF FORMAL ('MOER_DIAMETER', 1190, 220); 61 9=LF FORMAL ( ( 'STOELPLAAT DIAMETER', 1,190,-780, Q, 140, ( 'LECYL CDIA ',240, ('ANKER DIAMETER ',1240, 970); C25=LFGEOMETRY('LFSPH',690,-780,, 'SLOC, 640, - 'SRAD', 740, #4,#2,#55,#56, (#57,#58), 'ST GROUT', 690, 220, # 7, #2, #59, #60, (#61), STATEMENT('ST MOER', 1190,220, #9, #2, #62, #63, (#64), 0 ) #65,#66, (#67), 1,2190,220,#10, #2, #68, #69, (#70), 770,#2,#71,, 'ANKER OTN', 1290, 670, #2, VARIABLE('DIKTE MOER', 1,1090, 1090,720,1/2,1/75,);

101 B november VARIABLE('DIKTE PLANK', 1090, 820, 190, -530,#21, #4, #78,#79, (1/80,181), 'STANG OTN', 290, -80, 1/4, 690, -530,125, #7, #84,#85, (#86,#87), 790,20,1/7,1/88,, 0); 045=LFORIENTATION('GROUTOTN', 790, -80,1/7, #89,); 046=LFSTATEMENT('STLFSTDMOER',1190,-530,#12,#9,#90,#91, (1/92), 1/9,1/93,, 'MOER OTN', 1290, -80, 1/9, /194,); 049=LPSTATEMENT('STLF'STDASTOEL',2190,-530,#13,#10,#95,#96, (1/97), 1/10,1/98,, 'ANKERSTOEL OTN', 2290, -80,1/10, 199,); 952=LFSTATEMENT('STLESTDSTOELP',1690,-530,#14,#11,#100,#101, (1102), Q); 953=LFPOSITION( 'STOELPLAAT PSN', 1790,20, 1/11, 1/103,, 1/2, 'ST STANG OTN',290, 170, 1/2,1/106,); 85 7LE ACTUAL ( ST_STANG_DIAMETER ', 140, 470, #2, #1 ACTUAL('ST STANG 790,270,1/2,1/109,, 'ST GROOT OTN', 790,170, #2, ACTUAL('ST GROUT STRAAL', 690,470, 1/2, 1/2,1/112,, 'ST MOER OTN', ACTUAL('ST MOER DIAMETER', 1/115,, 1/2,1/116,); 8 67=LF ACTUAL ('ST STOELPLAAT DIAMETER', 1690, 470, ff2, 1/11 1/2,1/118,, ORIENTATION('ST ANKERSTOEL OTN', 2290,170, 1/2, -1, -1, '(0,0,0) '((1,0,0), EXPRESSION('DIKTE MOER VALUE', -1, -1, VALUE', -1,-1, HOOGTEANKERSTOEL VALUE', -1, -1, '110'); 076=LF EXPRESSION('DIKTE PLANK VALUE', -1, -1, ( 'ST STANGCYL CLOC',14O, -280, 14, ( 'ST STANGCYL CDIA ',24O, -280, 1/4, EXPRESSION('STANG PSN VALUE', -1, -1, '(0,0,0) EXPRESSION ('STANG OTN VALUE', -1, -1, '((1,0,0), 'ST GROUTSPH OTN', 790, -580, #7, ('ST GROUTSPHSLOC', 640, -280, 1/7, EXPRESSION('GROUT PSN VALUE', -1, -1, '(0,0,0) '((1,0,0), 1/9, 'ST LFSTDMOER OTN', 1290, -580, #9, 1190, -280, #9, '((O,O,-l), ACTUAL( 'ST LESTDASTOEL DIAMETER ',219O, -280, #10, VALUE', -1, -1, '(0,0,0) -1, -1, '((0,0,1), (1,0,0)) 1/11, #135,,0);

102 mamem november 1992 'ST LFSTDSTOELP OTN', 1790, -580, #11, #136,); 0102=LEACTUAL( 'ST LESTDSTOELP DIAMETER', 1 690, -280, #11, '(0,0,0) -1, -1, '((0,0,1), (1,0,0)) - 1,-1, '(- (BREEDTE GORDING / 2) - DIKTE PLANK - HOOGTE ANKERSTOEL - DIKTE STOELPLAAT - 2 * DIKTE MOER, 0, - 1,-1, '((1,0,0), EXPRESSION('ST STANG DIAMETER VALUE', -1, -1, 'ANKER EXPRESSION('ST STANG LENGTE VALUE', -1,-1, 'ANKER VALUE', -1,-1, '(ANKER_LENGTE (BREEDTE GORDING / 2) - DIKTE PLANK - HOOGTE ANKERSTOEL - DIKTE STOELPLAAT - 2 * DIKTE MOER,0, 0) '((1,0,0), - 1,-1, '(- (BREEDTE GORDING / 2) - DIKTE PLANK - HOOGTE ANKERSTOEL - DIKTE STOELPLAAT,0,0) '); 0113=LPEXPRESSION('STMOEROTNVALUE',l,l, '((1,0,0), EXPRESSION('ST MOER DIAMETER VALUE', -1, -1, VALUE', -1, -1, '(- (BREEDTE GORDING / 2) - DIKTE PLANK - HOOGTE ANKERSTOEL, 0, 0) '((-1,0, 0), (0,0,1))'); 811 7=LF EXPRESSION( 'ST STOELPLAAT DIAMETER VALUE', -1, - 1, VALUE', -1, -1, '(- (BREEDTE GORDING / 2) - DIKTE PLANK, 0,0) '((-1,0, 0), 'ST ANKERSTOEL DIAME TER_VALUE', -1, - 1, 'ANKER '(0,0,0)'); 0122=LFEXPRESSION('STSTANGCYLOTNVALUE',1,1, '((1,0,0), EXPRESSION('STSTANGCYLCLOC VALUE', -1, - 1, ' ( (0, 0, 0), (S TANG LENGTE,0,0)) VALUE', -1, -1, VALUE', -1, -1, '(0,0,0) '((1,0,0), (0,0,1)) (d127=lfexpression('stgroutsphsloc VALUE', -1, -1, '(0,0,0) 'ST GROUTSPH SRAD VALUE', -1, -1, 'GROUT VALUE', -1, -1, '(0,0,0) '((1,0,0), EXPRESSION('ST LFSTDMOER DIAMETER VALUE', -1, -1, -1, '(0,0,0) '(( ), (0,0,1)) 'ST LFSTDASTOEL DIAMETER VALUE', -1, - 1, 'ANKERSTOEL VALUE', -1, -1, '(0,0,0) '); 0136=LFEXPRESSION('STLFSTDSTOELPOTNVALUE',-1,-1, '((1,0,0), (0,0,1))'); 0137=LF_EXPRESSION( 'ST LFSTDSTOELP DIAMETER VALUE', -1,- 1, 'STOELPLAA T_DIAMETER'); ENDSEC; ENDSTEP;

103 B november BIJLAGE F GEGENEREERDE DAL CODE F.1 ANKER PROGRAM ANKER FU@PSN EU@OTN FU@MATRIX LENGTE ANKER@DIAME TER GLOBAL MAPON MAKESET' STANG GROUT MOER STOELPLAAT" ANKERSTOEL" LEMULTIPLY LF'DIVIDE LEADD LFSUBTRACT' LEMEASURE LPNORMVEC" LFLENGTH STAR TPOINT LEO IFVEC LFDIRVEC" LFPNT LFLNE" LFCRC LFFCE" LFCYL LFBOX LFRUL LFSWP LFSPH MKCCV' CALCINT LFLSTSIZE DELITM DELITMS PROGNAME = "ANKER'S VERBOSE 0 DEBUGF = 0 MMESS VERBOSE (PROGNAME," : VERSION 1.0') 1 ANKER@PSN = (0,0,0) ANKER@OTN = ((1,0,0), (0,0,1)) MATRIX = MAPON FU@MATRIX FU@PSN FU@OTN" ANKER@PSN ANKER@OTN DIKTE@MOER = 75 DIKTE@STOELPLAAT = 75 H000TE@ANKERSTOEL = 110 DIKTE@PLANK = 19 BREEDTE@GORDING = 240 ITEMLIST = (NIL) ST@STANG@DIAMETER = ANKER@DIAMETER ST@STANG@LENGTE = ANKER@LENGTE ST@STANG@PSN = (- (BREED TE@GORDING / 2) - DIKTE@PLANK HOOGTE@ANKERSTOEL - OIKTESTOELPLAAT - 2 * DIKTE@MOER,0,0) ST@STANG@OTN = ((1,0,0), (0,0,1)) NEWITEM = STANG $ST@STANG@PSN $ST@STANCLOTN $MATRIX" $ST@STANG@DIAMETER $ST@STANG@LENGTE ITEMLIST = ITEMLIST %AUG NEWITEM

104 B november MATRIX = MAPON EU@MATRIX FU@PSN EU@OTN" ANKER@PSN ANKER@OTN ST@GR0UT@STRAAL = 250 ST@GR0UT@PSN = (ANKER@LENGTE - (BREEDTE@GORDING / 2) - DIKTE@PLANK - H000TE@ANKERSTOEL - DIKTE@STOELPLAAT - 2 * DIKTE@M0ER,0,0) ST@GROUT@OTN = ((1,0, 0), (0, 0, 1)) NEWITEM GROUT $ST@GROUT@PSN $ST@GROUT@OTN $MATRIX $ST@GROUT@STRAAL ITEMLIST ITEMLIST %AUG NEWITEM MATRIX = MAPON EU@MATRIX F'U@PSN EU@0TN' ANKER@PSN ANKER@OTN ST@MOER@DIAMETER = ANKER@DIAME TER ST@M0ER(PSN = ( (BREED TE@GORDING / 2) DIKTE@PLANK HOOGTERANKERSTOEL DIKTE@STOELPLA.AT, 0, 0) ST@MOER@OTN ((1,0,0), (0,0,1)) NEWITEM = MOER $ST@MOER@PSN $ST@MOER@OTN $MATRIX $S T@MOER@DIAME TER ITEMLIST = ITEMLIST %AUG NEWITEM MATRIX = MAPON FU@MATRIX FU@PSN FU@OTN' ANKER@PSN ANKER@OTN ST@STOELPLAA T@DIAMETER = ANKER@DIAME TER ST@STOELPLAAT@PSN = ( (BREEDTE@GORDING / 2) DIKTE@PLANK HOOGTE@ANKERSTOEL, 0, 0) ST@STOELPLAAT@OTN = ((-1,0,0), (0,0,1)) NEWITEM = STOELPLAAT $ST@STOELPLAAT@PSN $ST@STOELPLAAT@OTN $MATRIX" $STLSTOELPLAA T@DIAME TER ITEMLIST = ITEMLIST 9AUG NEWITEM MATRIX = MAPON FU@MATRIX FU@PSN FU@OTN ANKER@PSN ANKER@OTN ST@ANKERSTOELLdDIAMETER = ANKER@DIAMETER ST@ANKERSTOEL@PSN = ( (BREEDTE@GORDING / 2) DIKTE@PLANK,0,0) ST@ANKERSTOEL@OTN = ((-1,0,0), (0,1,0)) NEWITEM = ANKERS TOEL $ST@ANKERSTOEL@PSN $ST@ANKERSTOEL@OTN $MATRIX' $S T@ANKERSTOELLaDIAME TER ITEMLIST = ITEMLIST %AUG NEWITEM MATRIX = MAPON FU@MATRIX F'U@PSN FU@OTN" ANKER@PSN ANKER@OTN ITMSET = MAKESET ITEMLIST 1 TMSE T RETURN END PROGRAM [ ANKER 1

105 B november F.2 ANKERSTOEL PROGRAM ANKERSTOEL ANKERS GLOBAL MAPON MAKESET LFSTDASTOEL LFMULTIPLY LEDIVIDE LPADD LFSUBTRACT LFMEASURE LFNORMVEC LPLENGTH STARTPOINT' LEDIFVEC LEDIRVEC' LFPNT LF'LNE' LPCRC LPPCE' LECYL LFBOX LERUL LFSWP' LFSPH MKCCV" CALCINT LELST5IZE' DELITM DELITMS PROGNAME = "ANKERSTOEL" VERBOSE = 0 DEBUG? = 0 [ MMESS VERBOSE (PROGNAME, : VERSION 1.0") ANKERSTOEL@PSN = (0,0,0) ANKERSTOEL@OTN = ((0,0,1), (1,0,0)) MATRIX = MAPON EU@MATRIX PU@PSN PU@OTN' ANKERS TOEL@PSN ANKERS TOEL@OTN ITEMLIST = (NIL) ST@LFSTDASTOEL@DIAMETER = ANKERSTOEL@DIAMETER NEWITEM = LESTDASTOEL $ST@LESTDASTOEL@DIAMETER ITEMLIST = ITEMLIST %AUG NEWITEM MATRIX = MAPON FU@MATRIX PU@PSN FU@OTN ANKERS TOEL@PSN ANKERSTOEL@OTN ITMSET = MAKESET ITEMLIST 1 TMSE T RETURN END PROGRAM / ANKERS TOEL PROGRAM DAMWAND PU@PSN PU@OTN PU@MATRIX DAMWAND@KR DAMWAND@BG DAMWAND@HB1 DAMWAND@HO1 DAM WAND@HB2 DAM WAND@R02 DAMWAND@AA DAMWAND@HA GLOBAL MAPON MAKESET"

106 B november MERK LFMULTIPLY LFDIVIDE" LFADD LFSUBTRACT" LF'MEASURE LFNORMVEC" LFLENGTH STAR TPOINT LFDIFVEC LFDIRVEC" LFPNT LELNE" LFCRC LFFCE" LFCYL LFBOX" LFRUL LFSWP" LFSPH MKCCV" CALCINT LFLSTSIZE" DELITM DELITMS PROGNAME = "DAMWAND" VERBOSE = 0 DEBUGF = 0 MMESS VERBOSE (PROGNAME," : VERSION 1.0") DAMWAND@PSN = (0, 0, 0) DAMWAND@OTN = ((1,0,0), (0,0,1)) MATRIX = MAPON FU@MATRIX FU@PSN FU@OTN" DAMWAND@PSN DAMWAND@OTN BREED TE@PLANK = 500 NR@PLANKEN@IN@MERK = 6 LENGTE@KROMME = LFLENGTH DAMWAND@KR NR@PLANKEN = LENGTE@KRQMME / BREED TE@PLANK LENGTE@MERK = * BREED TE@PLANK NR@MERKEN = NR@PLANKEN / OFFSET@HB = (DAMWAND@HB2 - DAMWAND@HB1) / NR@MERKEN OFFSET@HO = (DAMWAND@H02 - DAMWAND@H01) / NR@MERKEN ITEMLIST = (NIL) OLD@PSN = STAR TPOINT DAM WAND@KR BLP@CRC = LFCRC OLD@PSN LENGTE@MERK NEW@PSN = CALCINT DAMWAND@KR HLP@CRC DIR@VEC = LFDIRVEC OLD@PSN NEW@PSN IT@MERK@PSN = OLD@PSN IT@MERK@OTN = (DIR@VEC, (0,0,1)) FOR 1 = 1 TO NR@MERKEN 1 = NR@PLANKEN@IN@MERK IT@MERK@HG = DAMWAND@HG IT@MERK@HB1 = DAMWAND@HB1 + (1-1) * OFFSET@BB IT@MERK@H01 = DAMWAND@H01 + (1-1) * OFFSET@BO IT@MERK@HB2 = DAMWAND@HBI 1 * OFFSET@HB IT@MERK@H02 = DAMWAND@HO1 + 1 * OFFSET@HO IT@MERK@AP = (2,4) IT@MERK@HA = DAMWAND@HA NEWITEM = MERK $IT@MERK@PSN $IT@MERK@OTN $MATRIx' $IT@MERK@HG" $IT(dMERKBHB1 $IT@MERK@1101" $IT@MERK@HB2 $IT@MERK@H02" $1 T@MERK@AP $IT@MERK@HA ITEMLIST = ITEMLIST *AUG NEWITEM MATRIX = MAPON FU@MATRIX FU@PSN FU@OTN"

107 B november # LF'DIFVEC OLD@PSN NEW@PSN OLD@PSN = NEW@PSN HLPCRC LPCRC OLD@PSN LENGTEMERK NEW@PSN = CALCINT DAMWAND@KR HLP@CRC NEAR@PSN DIR@VEC = LEDIRVEC OLD@PSN NEW@PSN IT@MERK@PSN = OLD@PSN IT@MERK@OTN = (DIR@VEC, (0,0,1)) CONTINUE ITMSET = MAKESET ITEMLIST 1 TMSE T RETURN END PROGRAM [ DAMWAND 1 F.4 GORDING PROGRAM GORDING FU@PSN EU@OTN FU@MATRIX GORDING@LENGTE GLOBAL MAPON MAKESET' LES TDGORDING LEMULTIPLY LFDIVIDE" LEADD LFSUBTRACT' LFMEASURE LFNORMVEC" LELENGTH STAR TPOINT" LFDIEVEC LFDIRVEC LEPNT LELNE' LFCRC LFECE LFCYL LF'BOX LERUL LESWP LFSPH MKCCV" CALCINT LFLSTSIZE" DELITM DELITMS PROGNAME = "GORDING" VERBOSE 0 DEBUGF = 0 MMESS VERBOSE (PROGNAME," : VERSION 1.0") ] GORDING@PSN = (0,0,0) GORDING@OTN = ((0,0,1), (0,1,0)) MATRIX = MAPON FU@MATRIX FU@PSN FU@OTN GORDING@PSN GORDING@OTN ITEMLIST = (NIL) STLESTDGORDING@TYPE = "G24" ST@LESTDGORDING@LENGTE = GORDING@LENGTE NEWI TEM = LESTDGORDING $ST@LFSTDGORDING@ TYPE $ST@LFSTDGORDING@LENGTE ITEMLIST = ITEMLIST %AUG NEWITEM

108 B november 1992 ir MATRIX = MAPON FU@MATRIX FU@PSN PU@OTN" GORDING@PSN GORDING@OTN TTMSTT MAKESET ITEMLIST 1 TMSE T RETURN END PROGRAM [ GORDING 1 F.5 GROUT PROGRAM GROUT FU@PSN PU@OTN FU@MATRIX' GROUT@STRAAL GLOBAL MAPON MAKESET" LEMULTIPLY LFDIV1DE LFADD LFSUBTRACT" LEMEASURE LFNORMVEC' LFLENGTH STARTPOINT LEDIEVEC LFDIRVEC' LFPNT LFLNE' LFCRC LFFCE' LECYL LFBOX" LERUL LFSWP' LFSPH MKCCV CALCINT LFLSTSIZE DELITM DELITMS PROGNAME = "GROUT" VERBOSE = 0 DEBUGF = 0 MMESS VERBOSE (PROGNAME," : VERSION 1.0") ] GROUT@PSN = (0, 0, 0) GROUT@OTN = ((1,0,0), (0,0,1)) MATRIX = MAPON FU@MATRIX FU@PSN PU@OTN" GROUT@PSN GROUT@OTN ITEMLIST = (NIL) ST@GROUTSPH@SLOC = (0,0,0) ST@GROUTSPII@SRAD = GROUT@STRAAL NEWITEM = LFSPH $ST@GROUTSPH(dSLOC $ST@GROUTSPH@SRAD ITEMLIST = ITEMLIST %AUG NEWITEM MATRIX = MAPON FU@MATRIX EU@PSN FU@OTN" GROUT@PSN GROUT@OTN ITMSET = MAKESET ITEMLIST 1 TMSE T RETURN END PROGRAM [ GROUT

109 B november F.6 MERK PROGRAM MERK MERKRH02 GLOBAL MAPON MAKESET" PLANK" GORDING" ANKER LFMULTIPLY LEDIVIDE" LFADD LFSLJBTRACT" LEMEASURE LFNORMVEC" LFLENGTB STAR TPOINT" LEDIEVEC LF'DIRVEC" LFPNT LELNE" LFCRC LFFCE" LECYL LEBOX" LF'RUL LF'SWP" LFSPH MKCCV" CALCINT LFLSTSIZE" DELITM DELITMS PROGNAME = "MERK" VERBOSE = 0 DEBUGE = 0 1 MMESS VERBOSE (PROGNAME," : VERSION 1.0") MERK@PSN = (0,0,0) MERK@OTN = ((1,0,0), (0,0,1)) MATRIX = MAPON FU@MATRIX FU@PSN FU@OTN" MERK@PSN MERK@OTN BREEDTE@PLANK = 500 DIEPTELaPLANK = DIKTE@SLUITING = 56 LENGTE@GORDING = * BREED TE@PLANK DIAMETER@ANKER = 50 BREEDTE@GORDING = 240 LENGTE0ANKER = NR@ANKERS = LFLSTSIZE MERK@AP H000TE@ANKERSTOEL = 110 DIKTE@STOELPLAAT = 75 DIKTE@MOER = 75 ITEMLIST = (NIL) LENGTE@PLANK = MERK@HB1 - MERK@HO1 PLIP = 1 ITRPLANK@PSN = ((BREEDTE@PLANK / 2), (DIEPTE@PLANK / 2),MERKLdBB1) IT@PLANK@OTN = ((0,0,1), (1,0,0)) FOR 1 = 1 TO OFFSET@HB = (MERK@HB2 - MERK@HBI) / OFFSET@HO = (MERK@H02 - MERK@H01) / MERK@NR@PLANKEN

110 november = FLIP * LENGTE@PLANK NEWITEM = PLANK $IT@PLANK@PSN $IT@PLANK@OTN $MATRIX" $IT@PLANK@LENGTE ITEMLIST ITEMLIST %AUG NEWITEM MATRIX MAPON FU@MATRIX FU@PSN FU@OTN MERK@PSN MERK@OTN LENGTE@PLANK = LENGTE@PLANK + OFFSET@HB OFFSET@HC FLIP = FLIP IT@PLANK@PSN = ITPLANK@PSN + (BREEDTE@PLANK,0,OFFSET@HB) IT@PLANK@OTN = ( (IT@PLANKOTN 1), (IT@PLANKOTN 2)) CONTINUE ST@BOVENGORDING@ LENGTE = LENGTE@GORD ING ST@BOVENGORDINGLdPSN = (0, (BREEDTE@GORDING / 2) (DIKTE@SLUITING / 2),MERK@HG + 2 * DIAMETER@ANKER) ST@BOVENGORDING@OTN (0,0,0), (0,0,1)) NEWITEM = GORD ING $ST@BOVENGORDING@PSN $ST@BOVENGORDING@OTN $MA TR IX" $ST@BO VENGORDING@LENGTE ITEMLIST = ITEMLIST %AUG NEWITEM MATRIX = MAPON FU@MATRIX FU@PSN FU@OTN" MERK@PSN MERK@OTN ST@ONDERGORDING@LENGTE = LENGTE@GORDING ST@ONDERGORDING@PSN = (0, (BREEDTE@GORDING / 2) (DIKTE@SLUITING / 2),MERK@HG 2 DIAMETER@ANKER) ST@ONDERGORDING@OTN = ((1,0,0), (0,0, 1)) NEWITEM = GORD ING $STRONDERGORDING@PSN $ST@ONDERGORDINGCOTN $MA TR IX" $ST@ONDERGORDING@ LENGTE ITEMLIST = ITEMLIST %AUG NEWITEM MATRIX = MAPON FU@MATRIX FU@PSN FU@OTN" MERK@PSN MERK@OTN FOR 1 = 1 TO NR@ANKERS IT@ANKER@LENGTE = LENGTE@ANKER IT@ANKER@DIAMETER = DIAMETER@ANKER IT@ANKERPSN = ((MERK@AP 1) * BREEDTE(3PLANK, (BREEDTE@GORDING / 2) (DIKTE@SLUITING / 2),MERK@RG) IT@ANKER@OTN = ((0,MERK@HA 1, MERK@HA), (0,0,1)) NEWITEM = ANKER $IT@ANKER@PSN $IT@ANKER@OTN $MATRIX $1 T@ANKER@LENGTE $ITLdANKER@DIAMETER ITEMLIST ITEMLIST %AUG NEWITEM MATRIX = MAPON FUCMATRIX FU@PSN FU@OTN" MERK@PSN MERK@OTN CONTINUE ITMSET = MAKESET ITEMLIST

111 november TMSE T RETURN END PROGRAM 1 MERK F.7 MOER PROGRAM MOER EUPSN FU@OTN FU@MATRIX" MOER@DIAME TER GLOBAL MAPON MAKESET' LES TDMOER" LFMULTIPLY LFDIVIDE' LF'ADD LFSUBTRACT LFMEASURE LFNORMVEC' LFLENGTH STARTPOINT LFDIFVEC LFDIRVEC LFPNT LFLNE' LFCRC LFFCE" LECYL LEBOX" LERUL LFSWP" LFSPH MKCCV" CALCINT LFLSTSIZE" DELITM DELITMS PROGNAME = "MOER" VERBOSE = 0 DEBUGF = 0 MMESS VERBOSE (PROGNAME," : VERSION ) ] MOER@PSN = (0,0,0) MOER@OTN = ((0,0,-1), (1,0,0)) MATRIX = MAPON FU@MATRIX FU@PSN EU@OTN" MOER@PSN MOER@OTN ITEMLIST = (NIL) ST@LFSTDMOER@DIAMETER = MOER@DIAMETER NEWITEM = LESTDMOER $ST@LFSTDMOER@DIAMETER ITEMLIST = ITEMLIST %AUG NEWITEM MATRIX = MAPON FU@MATRIX EU@PSN F'U@OTN" MOER@PSN MOER@OTN ITMSET = MAKESET ITEMLIST ITMSET RETURN END PROGRAM ( MOER F.8 PLANK

112 B november PROGRAM PLANK GLOBAL MAPON MAKESET LFSTDPLANK LFMULTIPLY LFDIVIDE' LEADD LFSUBTRACT' LFMEASURE LF'NORMVEC LFLENGTH STAR TPOINT LFDIFVEC LFDIRVEC" LFPNT LELNE" LFCRC LF'ECE" LECYL LEBOX" LFRUL LESWP" LFSPH MKCCV" CALCINT LPLSTSIZE" DELITM DELITMS PROGNAME = "PLANK" VERBOSE = 0 DEBUG? = 0 MMESS VERBOSE (PROGNAME," : VERSION 1.0") ] PLANK@PSN = (0, 0, 0) PLANK@OTN = ((0, 0, 1), (1, 0, 0)) MATRIX = MAPON FU@MATRIX FU@PSN FU@OTN" PLANK@PSN PLANK@OTN ITEMLIST = (NIL) ST@LFSTDPLANK@TYPE = "BZ32" ST@LFSTDPLANK@LENGTE = PLANK@LENGTE NEWITEM = LFSTDPLANK $ST@LESTDPLANK@TYPE $ST@LESTDPLANK@LENGTE ITEMLIST = ITEMLIST 'AUG NEWITEM MATRIX = MAPON EU@MATRIX PU@PSN FU@OTN" PLANK@PSN PLANK@OTN ITMSET = MAKESET ITEMLIST 1 TMSE T RETURN END PROGRAM [ PLANK 1 F.9 STANG PROGRAM STANG FU@PSN FU@OTN EU@MATRIX" STANG@DIAMETER STANG@LENGTE GLOBAL MAPON MAKESET" LEMULTIPLY LEDIVIDE" LEADO LFSUBTRACT" LFMEASURE LFNORMVEC" LFLENGTB STARTPOINT" LEDIFVEC LEDIRVEC"

113 B november LFPNT LFLNE LFCRC LFPCE LF'CYL LEBOX" LERUL LFSWP" LFSPH MKCCV" CALCINT LFLSTSIZE" DELITM DELITMS PROGNAME = "STANG" VERBOSE = 0 DEBUGE = 0 MMESS VERBOSE (PROGNAME," : VERSION ) STANG@PSN = (0, 0, 0) STANG@OTN = ((1,0,0), (0,0,1)) MATRIX = MAPON PU@MATRIX FU@PSN FU@OTN" STANG@PSN STANG@OTN ITEMLIST = (NIL) ST@STANGCYL@CLOC = ((0, 0, 0), (STANG@LENGTE, 0, 0)) ST@STANGCYL@CDIA = STANG@DIAMETER NEWITEM = LFCYL $ST@STANGCYL@CLOC $ST@STANGCYL@CDIA ILEMLIST = ITEMLIST %AUG NEWITEM MATRIX = MAPON F'U@MATRIX PU@PSN FU@OTN" STANG@PSN STANG@OTN ITMSET = MAKESET ITEMLIST ITMSE T RETURN END PROGRAM [ STANG 1 F.10 STOELPLAAT PROGRAM STOELPLAAT FU@PSN FU@OTN F'U@MATRIX" STOELPLAAT@OIAME TER GLOBAL MAPON MAKESET" LFSTDSTOELP LF'MUL TIPLY LEDIVIDE LF'ADD LFSUBTRACT" LEMEASURE LFNORMVEC" LFLENGTH STAR TPOINT" LEDIPVEC LEDIRVEC" LEPNT LELNE" LFCRC LFFCE" LF'CYL LEBOX" LERUL LFSWP" LESPH MKCCV" CALCINT LFLSTSIZE" DELITM DELITMS PROGNAME = "STOELPLAAT" VERBOSE = 0

114 B november DEBUGE = 0 MMESS VERBOSE (PROGNAME," : VERSION 1.0") STOELPLAAT@PSN = (0, 0, 0) STOELPLAAT@OTN = ((0, 0,1), (1, 0, 0)) MATRIX = MAPON F'U@MATRIX PU@PSN FULOTN STOELPLAAT@PSN STOELPLAAT@OTN ITEMLIST = (NIL) ST@LPSTDSTOELP@DIAMETER = STOELPLAAT@DIAMETER NEWITEM = LPSTDSTOELP $STLPSTDSTOELPDIAMETER ITEMLIST ITEMLIST %AUG NEWITEM MATRIX = MAPON PU@MATRIX EU@PSN FU@OTN STOELPLAAT@PSN STOELPLAAT@OTN ITMSET = MAKESET ITEMLIST ITMSET RETURN END PROGRAM [ STOELPLAAT

115

116

bi: TNO-Bouw 4%0--o%

bi: TNO-Bouw 4%0--o% bi: TNO-Bouw 4%0--o% *1 T NO-Bouw Lange Kleiweg 5, Rijsvuijk Postbus 49 2600 AA Delft Telex 3 82 70 Fax 015-843990 Telefoon 015-842000 TNO -rapport 93-BI-R 1227 CAD NEUTRALE LEAFO EDITOR - CAD ONAFHANKELIJKHEID

Nadere informatie

Een korte samenvatting van enkele FORTRAN opdrachten

Een korte samenvatting van enkele FORTRAN opdrachten Een korte samenvatting van enkele FORTRAN opdrachten Inhoud 1 Introductie 3 2 De structuur van een FORTRAN programma 3 3 Datatypen, variabelen en declaraties 3 4 Expressies-volgorde van uitwerking 4 5

Nadere informatie

Vakgroep CW KAHO Sint-Lieven

Vakgroep CW KAHO Sint-Lieven Vakgroep CW KAHO Sint-Lieven Objecten Programmeren voor de Sport: Een inleiding tot JAVA objecten Wetenschapsweek 20 November 2012 Tony Wauters en Tim Vermeulen tony.wauters@kahosl.be en tim.vermeulen@kahosl.be

Nadere informatie

HOE TEKEN IK EEN OMGEVINGSMODEL

HOE TEKEN IK EEN OMGEVINGSMODEL HOE TEKEN IK EEN OMGEVINGSMODEL MATTIAS DE WAEL 1. Inleiding Om de allereenvoudigste Scheme expressies te begrijpen volstaat het substitutiemodel. Het substitutiemodel verondersteld het bestaan van een

Nadere informatie

Sparse columns in SQL server 2008

Sparse columns in SQL server 2008 Sparse columns in SQL server 2008 Object persistentie eenvoudig gemaakt Bert Dingemans, e-mail : info@dla-os.nl www : http:// 1 Content SPARSE COLUMNS IN SQL SERVER 2008... 1 OBJECT PERSISTENTIE EENVOUDIG

Nadere informatie

Uitleg van de Hough transformatie

Uitleg van de Hough transformatie Uitleg van de Hough transformatie Maarten M. Fokkinga, Joeri van Ruth Database groep, Fac. EWI, Universiteit Twente Versie van 17 mei 2005, 10:59 De Hough transformatie is een wiskundige techniek om een

Nadere informatie

10 Meer over functies

10 Meer over functies 10 Meer over functies In hoofdstuk 5 hebben we functies uitgebreid bestudeerd. In dit hoofdstuk bekijken we drie andere aspecten van functies: recursieve functies dat wil zeggen, functies die zichzelf

Nadere informatie

BRP-BZM Use Case Realisations Guidelines

BRP-BZM Use Case Realisations Guidelines BRP-BZM Use Case Realisations Guidelines Versie 2.0 02-09-2011 Definitief Versiehistorie Datum Versie Auteur 23-12-2010 0.1 Eerste versie R.F. Schaaf 04-01-2011 1.0 Feedback verwerkt R. Schaaf en D. Geluk

Nadere informatie

Dynamiek met VO-Script

Dynamiek met VO-Script Dynamiek met VO-Script Door Bert Dingemans DLA Ontwerp & Software bert@dla-architect.nl Inleiding Op de SDGN nieuwsgroep voor Visual Objects ontstond laatst een draad van berichten over de nieuwe libraries

Nadere informatie

IBL TARIEFSDIFFERENTIATIE

IBL TARIEFSDIFFERENTIATIE IBL TARIEFSDIFFERENTIATIE Functionele specificatie OCLC PICA Mei 2004 Versie 2.1 INHOUD 1 REFERENTIES 3 2 INTRODUKTIE 3 3 UITGANGSPUNTEN 3 4 UITWERKING MOGELIJKE OPLOSSING 4 4.1 Toekennen classificatiecodes...

Nadere informatie

HOOFDSTUK 3. Imperatief programmeren. 3.1 Stapsgewijs programmeren. 3.2 If Then Else. Module 4 Programmeren

HOOFDSTUK 3. Imperatief programmeren. 3.1 Stapsgewijs programmeren. 3.2 If Then Else. Module 4 Programmeren HOOFDSTUK 3 3.1 Stapsgewijs programmeren De programmeertalen die tot nu toe genoemd zijn, zijn imperatieve of procedurele programmeertalen. is het stapsgewijs in code omschrijven wat een programma moet

Nadere informatie

1 Inleiding in Functioneel Programmeren

1 Inleiding in Functioneel Programmeren 1 Inleiding in Functioneel Programmeren door Elroy Jumpertz 1.1 Inleiding Aangezien Informatica een populaire minor is voor wiskundestudenten, leek het mij nuttig om een stukje te schrijven over een onderwerp

Nadere informatie

PYTHON REEKS 1: BASICS. Mathias Polfliet

PYTHON REEKS 1: BASICS. Mathias Polfliet PYTHON REEKS 1: BASICS Mathias Polfliet mpolflie@etrovub.be EENVOUDIGE REKENMACHINE 2 soorten getallen Getallen Z -> integers (gehele getallen) Getallen R -> floating points (reële getallen) Door beperkte

Nadere informatie

Canonieke Data Modellering op basis van ArchiMate. Canonieke Data Modellering op basis van Archimate Bert Dingemans

Canonieke Data Modellering op basis van ArchiMate. Canonieke Data Modellering op basis van Archimate Bert Dingemans Canonieke Data Modellering op basis van ArchiMate Canonieke Data Modellering op basis van Archimate Bert Dingemans Abstract Modelleren op basis van de open standard ArchiMate is een goed uitgangspunt voor

Nadere informatie

Als een PSD selecties bevat, deelt de lijn van het programma zich op met de verschillende antwoorden op het vraagstuk.

Als een PSD selecties bevat, deelt de lijn van het programma zich op met de verschillende antwoorden op het vraagstuk. HOOFDSTUK 3 3.1 Stapsgewijs programmeren In de vorige hoofdstukken zijn programmeertalen beschreven die imperatief zijn. is het stapsgewijs in code omschrijven wat een programma moet doen, net als een

Nadere informatie

Python. Vraag 1: Expressies en types. Vraag 1 b: Types -Ingebouwde functies- Vraag 1 a 3/10/14

Python. Vraag 1: Expressies en types. Vraag 1 b: Types -Ingebouwde functies- Vraag 1 a 3/10/14 Python Vraag 1: Expressies en types Integrated Development Environment (IDE): Ø Wing 101 (gratis te downloaden op www.wingware.com) Oefeningen in de shell >> noemen we de prompt Python commando s = expressies

Nadere informatie

Archimate risico extensies modelleren

Archimate risico extensies modelleren Archimate risico extensies modelleren Notatiewijzen van risico analyses op basis van checklists versie 0.2 Bert Dingemans 1 Inleiding Risico s zijn een extra dimensie bij het uitwerken van een architectuur.

Nadere informatie

Technisch Ontwerp W e b s i t e W O S I

Technisch Ontwerp W e b s i t e W O S I Technisch Ontwerp W e b s i t e W O S I WOSI Ruud Jungbacker en Michael de Vries - Technisch ontwerp Website Document historie Versie(s) Versie Datum Status Omschrijving / wijzigingen 0.1 20 nov 2008 Concept

Nadere informatie

{ specificatie (contract) en toelichting }

{ specificatie (contract) en toelichting } Programmeren Blok B Drie aspecten van routines http://www.win.tue.nl/ wstomv/edu/2ip05/ College 7 Tom Verhoeff Technische Universiteit Eindhoven Faculteit Wiskunde en Informatica Software Engineering &

Nadere informatie

Computervaardigheden. Universiteit Antwerpen. Computervaardigheden en Programmatie. Grafieken en Rapporten 1. Inhoud. Wat is scripting?

Computervaardigheden. Universiteit Antwerpen. Computervaardigheden en Programmatie. Grafieken en Rapporten 1. Inhoud. Wat is scripting? Inhoud Computervaardigheden Hoofdstuk 4 Scripting (Let op: dit is enkel voor studenten Biologie.) Dit hoofdstuk bekijkt heel kort de basis van scripting. - Opstellen van functies. - Conditionele code.

Nadere informatie

Zeon PDF Driver Trial

Zeon PDF Driver Trial Zakelijke software voor verkoop, dienstverlening en administratie Handleiding module Document Uitgaande correspondentie genereren Uitgaande correspondentie terugvinden Persoonlijk geadresseerde mailings

Nadere informatie

Deel 1: Arduino kennismaking. Wat is een microcontroller, structuur van een programma, syntax,

Deel 1: Arduino kennismaking. Wat is een microcontroller, structuur van een programma, syntax, Deel 1: Arduino kennismaking Wat is een microcontroller, structuur van een programma, syntax, Wat is een microcontroller Wat is een microcontroller? Microcontroller = kleine dedicated computer. - Beperkt

Nadere informatie

Tools voor canonieke datamodellering Bert Dingemans

Tools voor canonieke datamodellering Bert Dingemans Tools voor canonieke datamodellering Tools voor canonieke datamodellering Bert Dingemans Abstract Canonieke modellen worden al snel omvangrijk en complex te beheren. Dit whitepaper beschrijft een werkwijze

Nadere informatie

OEFENINGEN PYTHON REEKS 4

OEFENINGEN PYTHON REEKS 4 Vraag 1: Introductie Tekenen OEFENINGEN PYTHON REEKS 4 Vanaf deze les gaan we gebruik maken van het pakket VPython om de objecten te tekenen en weer te geven. Om aan alle functies te kunnen die VPython

Nadere informatie

Functie beschrijving: Het automatisch aanmaken van een raai-volgende contour

Functie beschrijving: Het automatisch aanmaken van een raai-volgende contour Modelit Rotterdamse Rijweg 126 3042 AS Rotterdam Telefoon +31 10 4623621 info@modelit.nl www.modelit.nl Functie beschrijving: Het automatisch aanmaken van een raai-volgende contour Datum 8 Mei 2004 Modelit

Nadere informatie

Voor de database wordt een Access 2000 bestand gebruikt, met voorlopig 1 tabel:

Voor de database wordt een Access 2000 bestand gebruikt, met voorlopig 1 tabel: Eenvoudig voorbeeld. Er wordt verondersteld dat er met VS 2008 EXPRESS gewerkt wordt. Voor de database wordt een Access 2000 bestand gebruikt, met voorlopig 1 tabel: (Sommige schermafdrukken zijn afkomstig

Nadere informatie

Software Design Document

Software Design Document Software Design Document Mathieu Reymond, Arno Moonens December 2014 Inhoudsopgave 1 Versiegeschiedenis 2 2 Definities 3 3 Introductie 4 3.1 Doel en Scope............................. 4 4 Logica 5 4.1

Nadere informatie

Handleiding Nederlandse Besteksystematiek

Handleiding Nederlandse Besteksystematiek Handleiding Nederlandse Besteksystematiek Inhoudsopgave 1 Inleiding... 3 1.1 NBS... 3 1.2 De NBS Catalogus... 3 2 Bestek, algemeen... 4 2.1 Het bestek... 4 2.2 De beschrijving van het werk... 4 2.3 De

Nadere informatie

Grafische elementen invoegen

Grafische elementen invoegen Grafische elementen invoegen Rev 00 I N H O U D S O P G A V E 1 INLEIDING... 1 2 LIJNEN EN RECHTHOEKEN TEKENEN... 1 2.1 Lijnen tekenen... 1 2.2 Polylijnen tekenen... 3 2.3 Rechthoeken tekenen... 3 3 CIRKELS,

Nadere informatie

QuikStart Beginnend Gebruiker - Algemeen. De werking van Vabi Elements in een vogelvlucht

QuikStart Beginnend Gebruiker - Algemeen. De werking van Vabi Elements in een vogelvlucht QuikStart Beginnend Gebruiker - Algemeen De werking van Vabi Elements in een vogelvlucht QuickStart Elements Introductie Welkom op de startpagina van Vabi Elements! Start of open een project. Gebruik Project

Nadere informatie

BIM-validatietool Toetst data bij aanlegprojecten

BIM-validatietool Toetst data bij aanlegprojecten BIM-validatietool Toetst data bij aanlegprojecten Overzicht validatieregels Categorie en validatieregel Omschrijving COINS 1 Categorie COINS/Validatieregel 1 Is de COINS container een zip-bestand? COINS

Nadere informatie

Software Test Plan. Yannick Verschueren

Software Test Plan. Yannick Verschueren Software Test Plan Yannick Verschueren November 2014 Document geschiedenis Versie Datum Auteur/co-auteur Beschrijving 1 November 2014 Yannick Verschueren Eerste versie 1 Inhoudstafel 1 Introductie 3 1.1

Nadere informatie

De hoek tussen twee lijnen in Cabri Geometry

De hoek tussen twee lijnen in Cabri Geometry De hoek tussen twee lijnen in Cabri Geometry DICK KLINGENS (e-mail: dklingens@pandd.nl) Krimpenerwaard College, Krimpen aan den IJssel (NL) augustus 2008 1. Inleiding In de (vlakke) Euclidische meetkunde

Nadere informatie

Solution Builder Lines. User Guide

Solution Builder Lines. User Guide Solution Builder Lines User Guide 2018, Eddon Software B.V., s-hertogenbosch. Niets van deze uitgave mag worden verveelvoudigd en/of openbaar gemaakt door middel van druk, fotokopie, microfilm of op welke

Nadere informatie

DATAMODELLERING ARCHIMATE DATA- & APPLICATIEMODELLERING

DATAMODELLERING ARCHIMATE DATA- & APPLICATIEMODELLERING DATAMODELLERING ARCHIMATE DATA- & APPLICATIEMODELLERING Inleiding In dit whitepaper wordt de datamodelleervorm ArchiMate data- & applicatiemodellering beschreven. Deze modelleervorm staat in verhouding

Nadere informatie

Inleiding Programmeren 2

Inleiding Programmeren 2 Inleiding Programmeren 2 Gertjan van Noord November 26, 2018 Stof week 3 nogmaals Zelle hoofdstuk 8 en recursie Brookshear hoofdstuk 5: Algoritmes Datastructuren: tuples Een geheel andere manier om te

Nadere informatie

start -> id (k (f c s) (g s c)) -> k (f c s) (g s c) -> f c s -> s c

start -> id (k (f c s) (g s c)) -> k (f c s) (g s c) -> f c s -> s c Een Minimaal Formalisme om te Programmeren We hebben gezien dat Turing machines beschouwd kunnen worden als universele computers. D.w.z. dat iedere berekening met natuurlijke getallen die met een computer

Nadere informatie

PROS1E1 Gestructureerd programmeren in C Dd/Kf/Bd

PROS1E1 Gestructureerd programmeren in C Dd/Kf/Bd Inhoudsopgave 1 Inleiding... 1 2 Toekenning- en herhalingsopdrachten (for loop)... 2 2.1 De wet van Ohm... 3 2.2 De spaarrekening... 3 2.3 De transformator... 3 3 Keuze- en herhalingsopdrachten (if, switch,

Nadere informatie

Korte handleiding Maple bij de cursus Meetkunde voor B

Korte handleiding Maple bij de cursus Meetkunde voor B Korte handleiding Maple bij de cursus Meetkunde voor B Deze handleiding sluit aan op en is gedeeltelijk gelijk aan de handleidingen die gebruikt worden bij de cursussen Wiskunde 2 en 3 voor B. Er zijn

Nadere informatie

Constanten. Variabelen. Expressies. Variabelen. Constanten. Voorbeeld : varid.py. een symbolische naam voor een object.

Constanten. Variabelen. Expressies. Variabelen. Constanten. Voorbeeld : varid.py. een symbolische naam voor een object. een symbolische naam voor een object. Variabelen Constanten Variabelen Expressies naam : geeft de plaats in het geheugen aan waarde : de inhoud van het object identifier : een rij van letters en/of cijfers

Nadere informatie

Beknopte handleiding voor Derive 5.0 for Windows

Beknopte handleiding voor Derive 5.0 for Windows - Lesbrief Beknopte handleiding voor Derive 5.0 for Voorspelbaarheid en Populaties in de tijd Doelgroep Klas 5 t/m 6 havo en vwo Vakken en domeinen Algemene natuurwetenschappen VWO Wiskunde VWO: A domein

Nadere informatie

Studieplan. Permissie toekennen Beheer studieplan formulieren

Studieplan. Permissie toekennen Beheer studieplan formulieren Studieplan Om studenten inzicht te geven in de opbouw en inhoud van hun opleiding, wordt het Studieplan ingezet. Docenten verdelen vakken/modules over de periodes en studiejaren, vinken relevante kerntaken

Nadere informatie

Datastructuren Werkcollege Intro

Datastructuren Werkcollege Intro Bart Hijmans, Universiteit Leiden. Universiteit Leiden The Netherlands Focus 1 19 ˆ Ervaring in gebruik en implementatie van datastructuren ˆ Kennis van mogelijkheden ˆ Programmeren voor andere programmeurs

Nadere informatie

Tweede deeltentamen Mobiel programmeren - versie 1 Vrijdag 2 februari 2018, uur

Tweede deeltentamen Mobiel programmeren - versie 1 Vrijdag 2 februari 2018, uur Tweede deeltentamen Mobiel programmeren - versie 1 Vrijdag 2 februari 2018, 8.30-10.30 uur Schrijf op elk ingeleverd blad je naam. Schrijf op het eerste blad ook je studentnummer en het aantal ingeleverde

Nadere informatie

Functioneel ontwerp. Omgevingsloket online. Koppeling met GBA

Functioneel ontwerp. Omgevingsloket online. Koppeling met GBA Functioneel ontwerp Omgevingsloket online Koppeling met GBA Juli 2014 Release 2.10 Pagina 1 van 18 Inhoudsopgave 1 Inleiding 3 1.1 Identificatie 3 1.2 Randvoorwaarden, uitgangspunten en referenties 3 2

Nadere informatie

{ specificatie (contract) en toelichting }

{ specificatie (contract) en toelichting } Programmeren Blok A Drie aspecten van routines http://www.win.tue.nl/ wstomv/edu/2ip05/ College 5 Kees Hemerik Tom Verhoeff Technische Universiteit Eindhoven Faculteit Wiskunde en Informatica Software

Nadere informatie

Programmeren Blok B. Onderwerpen. wstomv/edu/2ip05/ College 8. Tom Verhoeff

Programmeren Blok B. Onderwerpen.   wstomv/edu/2ip05/ College 8. Tom Verhoeff Programmeren Blok B Onderwerpen http://www.win.tue.nl/ wstomv/edu/2ip05/ College 8 Tom Verhoeff Technische Universiteit Eindhoven Faculteit Wiskunde en Informatica Software Engineering & Technology Verdelen

Nadere informatie

Uitgebreid eindwerkvoorstel Lokaliseren van personen en objecten met behulp van camera s

Uitgebreid eindwerkvoorstel Lokaliseren van personen en objecten met behulp van camera s Uitgebreid eindwerkvoorstel Lokaliseren van personen en objecten met behulp van camera s Sofie De Cooman 21 December 2006 Stagebedrijf: Interne begeleider: Externe begeleider: BarcoView Koen Van De Wiele

Nadere informatie

Programmeermethoden NA. Week 5: Functies (vervolg)

Programmeermethoden NA. Week 5: Functies (vervolg) Programmeermethoden NA Week 5: Functies (vervolg) Kristian Rietveld http://liacs.leidenuniv.nl/~rietveldkfd/courses/prna2016/ Functies Vorige week bekeken we functies: def bereken(a, x): return a * (x

Nadere informatie

Datastructuren Programmeeropdracht 3: Expressies. 1 Expressies. Deadline. Dinsdag 8 december 23:59.

Datastructuren Programmeeropdracht 3: Expressies. 1 Expressies. Deadline. Dinsdag 8 december 23:59. Datastructuren 2015 Programmeeropdracht 3: Expressies Deadline. Dinsdag 8 december 23:59. Inleiding. Deze opdracht is losjes gebaseerd op Opdracht 5.13.2 in het boek van Drozdek. U wordt gevraagd expressies

Nadere informatie

TaskCentre Web Service Connector: Creëren van requests in Synergy Enterprise

TaskCentre Web Service Connector: Creëren van requests in Synergy Enterprise TaskCentre Web Service Connector: Creëren van requests in Synergy Enterprise Inhoudsopgave 1. Voorbereiding... 4 2. Web Service Connector tool configuratie... 5 3. TaskCentre taak voor het aanmaken van

Nadere informatie

OEFENINGEN PYTHON REEKS 1

OEFENINGEN PYTHON REEKS 1 Vraag 1: Expressies & Types OEFENINGEN PYTHON REEKS 1 Python maakt gebruik van enkele vaak voorkomende (data)types. Zo zijn er integers die behoren tot de gehele getallen (VB: 3), zijn er float s die behoren

Nadere informatie

Milieuvergunningen in FMIS

Milieuvergunningen in FMIS Milieuvergunningen in FMIS 1. Algemeen Elk schooldomein dient verplicht over één of meerdere milieuvergunningen te beschikken. Deze vergunningen zijn gekoppeld aan een domein zelf of aan bepaalde installaties;

Nadere informatie

Een inleiding in de Unified Modeling Language 79

Een inleiding in de Unified Modeling Language 79 Een inleiding in de Unified Modeling Language 79 2. Het objectdiagram Soms hebben we behoefte om in de plaats van een klasse een instantie van deze klasse weer te geven. Figuur 3.22. toont als voorbeeld

Nadere informatie

Javascript oefenblad 1

Javascript oefenblad 1 Leer de basis van Javascript. Javascript oefenblad 1 Niels van Velzen Javascript oefenblad 1 Pagina 2 Inleiding Javascript is niet altijd even makkelijk. Vooral aan het begin is het even wennen hoe de

Nadere informatie

TRAIN SERVICE & SHUNTING PLANNER

TRAIN SERVICE & SHUNTING PLANNER TRAIN SERVICE & SHUNTING PLANNER BOB HUISMAN Dit projectplan is het startpunt voor de student om 1) een voorkeur voor een project uit te spreken en 2) te gebruiken als start informatie bij begin project.

Nadere informatie

Omschrijf bij ieder onderdeel van de methode de betekenis ervan. Java kent twee groepen van klassen die een GUI kunnen maken: awt en swing.

Omschrijf bij ieder onderdeel van de methode de betekenis ervan. Java kent twee groepen van klassen die een GUI kunnen maken: awt en swing. irkel (met Jpanel) ij de onderstaande opdracht behoort het bestand Panels: JPanels_1.java (map Panel) in de map irkel. pplicaties in Java hebben altijd een publieke klasse waarin een methode main voorkomt.

Nadere informatie

Standaardafgeleiden. Wisnet-HBO. update maart 2011

Standaardafgeleiden. Wisnet-HBO. update maart 2011 Standaardafgeleiden Wisnet-HBO update maart 2011 1 Inleiding Als je nog niets over differentiëren weet, kun je beter eerst naar de les Wat is Differentiëren gaan in Wisnet Verder zijn er Maplets om de

Nadere informatie

www.cadac.com Gebruikershandleiding CBZ Add-in AutoCAD

www.cadac.com Gebruikershandleiding CBZ Add-in AutoCAD www.cadac.com Gebruikershandleiding CBZ Add-in AutoCAD Versie: 2.0.0 Datum: 11-10-2007 www.cadac.com Inhoudsopgave 1 Methodiek... 3 2 Tekening openen... 3 3 Ruimteboek openen... 4 3.1 Nieuw ruimteboek

Nadere informatie

Handleiding competitie.nevobo.nl

Handleiding competitie.nevobo.nl De competitiewebsite, welke via http://competitie.nevobo.nl/ te bereiken is, wordt steeds belangrijker in de volleybalcompetities van de Nevobo. In dit document vindt u informatie over de werking van deze

Nadere informatie

De studie van vlakke krommen gegeven in parametervorm. Lieve Lemmens en Andy Snoecx

De studie van vlakke krommen gegeven in parametervorm. Lieve Lemmens en Andy Snoecx De studie van vlakke krommen gegeven in parametervorm Doelstellingen Lieve Lemmens en An Snoecx Deze tekst stelt een voorbeeld van de analyse van een kromme met de Texas TI-NSpire (en/of computersoftware)

Nadere informatie

Studieplan. Permissie toekennen Beheer studieplan formulieren

Studieplan. Permissie toekennen Beheer studieplan formulieren Studieplan Om studenten inzicht te geven in de opbouw en inhoud van hun opleiding, wordt het Studieplan ingezet. Docenten verdelen vakken/modules over de periodes en studiejaren, vinken relevante kerntaken

Nadere informatie

DATAMODELLERING DATA MAPPING MODEL

DATAMODELLERING DATA MAPPING MODEL DATAMODELLERING DATA MAPPING MODEL Inleiding In dit whitepaper wordt de datamodelleervorm data mapping model beschreven. Deze modelleervorm staat in verhouding tot een aantal andere modelleervormen. Wil

Nadere informatie

OEFENINGEN PYTHON REEKS 1

OEFENINGEN PYTHON REEKS 1 OEFENINGEN PYTHON REEKS 1 Vraag 1: Python als een eenvoudige rekenmachine Python maakt gebruik van enkele vaak voorkomende (data)types. Zo zijn er integers die behoren tot de gehele getallen (VB: 3) en

Nadere informatie

Zelftest Inleiding Programmeren

Zelftest Inleiding Programmeren Zelftest Inleiding Programmeren Document: n0824test.fm 22/01/2013 ABIS Training & Consulting P.O. Box 220 B-3000 Leuven Belgium TRAINING & CONSULTING INLEIDING BIJ DE ZELFTEST INLEIDING PROGRAMMEREN Deze

Nadere informatie

Praktisch aan de slag

Praktisch aan de slag Praktisch aan de slag 1. 2. Inhoudsopgave Inleiding Navigatie en programma onderdelen Starten met Leerwinst door middel van arrangeren Schema arrangeren Op groepsniveau een plan schrijven Op leerlingniveau

Nadere informatie

Starters Handleiding DuboCalc Project versie 4.0 21 juni 2015. DuboCalc Project 4.0 StartersHandleiding

Starters Handleiding DuboCalc Project versie 4.0 21 juni 2015. DuboCalc Project 4.0 StartersHandleiding Starters Handleiding DuboCalc Project versie 4.0 21 juni 2015 DuboCalc Project 4.0 StartersHandleiding Inhoud 1 Aan de slag met DuboCalc Project... 5 1.1 Wat is DuboCalc Project?... 5 1.2 Starten van

Nadere informatie

Leren Programmeren met Visual Basic 6.0 Les 3+4. Hoofdstuk 4 : De Selectie

Leren Programmeren met Visual Basic 6.0 Les 3+4. Hoofdstuk 4 : De Selectie Leren Programmeren met Visual Basic 6.0 Les 3+4 Hoofdstuk 4 : De Selectie Visual Basic 6.0 1 Basisstructuren (herhaling) Sequentie (HK2) : Alle opdrachten gewoon na mekaar uitvoeren. Hier worden geen keuzes

Nadere informatie

CONFIDENTIEEL. EIB-RPT-880076 3 van 12. Samenvatting

CONFIDENTIEEL. EIB-RPT-880076 3 van 12. Samenvatting EIB-RPT-880076 3 van 12 Samenvatting Inleiding Dit rapport beschrijft de prototypekeuring van de SDUMJGA stemmachine RS- Vote. De RS-Vote stemmachine is bedoeld voor elektronisch gefaseerd stemmen en is

Nadere informatie

Combinatorische Algoritmen: Binary Decision Diagrams, Deel III

Combinatorische Algoritmen: Binary Decision Diagrams, Deel III Combinatorische Algoritmen: Binary Decision Diagrams, Deel III Sjoerd van Egmond LIACS, Leiden University, The Netherlands svegmond@liacs.nl 2 juni 2010 Samenvatting Deze notitie beschrijft een nederlandse

Nadere informatie

Modelleren en Programmeren

Modelleren en Programmeren Modelleren en Programmeren Jeroen Bransen 6 december 2013 Terugblik Programma en geheugen Opdrachten Variabelen Methoden Objecten Klasse Programma en geheugen Opdrachten Variabelen zijn gegroepeerd in

Nadere informatie

case: use-case-diagram

case: use-case-diagram Hoofdstuk 9 case: use-case-diagram Dit hoofdstuk beschrijft de totstandkoming van de use-cases voor EasyShop, het maaltijdsysteem van Hans en Jacqueline. Het zijn de functionele systeemeisen die hier worden

Nadere informatie

Vakinhoudelijke uitwerking Keuzevak Applicatieontwikkeling van het profiel MVI vmbo beroepsgericht

Vakinhoudelijke uitwerking Keuzevak Applicatieontwikkeling van het profiel MVI vmbo beroepsgericht Vakinhoudelijke uitwerking Keuzevak Applicatieontwikkeling van het profiel MVI vmbo beroepsgericht Deze vakinhoudelijke uitwerking is ontwikkeld door het Redactieteam van de Schooleamenbank vmbo voor dit

Nadere informatie

NHibernate als ORM oplossing

NHibernate als ORM oplossing NHibernate als ORM oplossing Weg met de SQL Queries Wat is ORM? ORM staat in dit geval voor Object Relational Mapping, niet te verwarren met Object Role Modeling. ORM vertaalt een objectmodel naar een

Nadere informatie

Tips & Truc ARCHICAD SE : Bibliotheekmigratie naar ARCHICAD SE 2016

Tips & Truc ARCHICAD SE : Bibliotheekmigratie naar ARCHICAD SE 2016 Tips & Truc ARCHICAD SE 2016 003: Bibliotheekmigratie naar ARCHICAD SE 2016 Bij het uitkomen van een nieuwe ARCHICAD versie kan bij een reeds gestart project ervoor gekozen worden om met de nieuwe bibliotheek

Nadere informatie

2IV10 Oefentoets uitwerking

2IV10 Oefentoets uitwerking 2IV10 Oefentoets uitwerking Deze oefentoets bestaat uit drie opgaven, waarvoor twee uur beschikbaar is. Bij voldoende resultaat wordt een bonuspunt toegekend voor het tentamen. De opgaven betreffen een

Nadere informatie

Programmeermethoden NA. Week 5: Functies (vervolg)

Programmeermethoden NA. Week 5: Functies (vervolg) Programmeermethoden NA Week 5: Functies (vervolg) Kristian Rietveld http://liacs.leidenuniv.nl/~rietveldkfd/courses/prna/ Bij ons leer je de wereld kennen 1 Functies Vorige week bekeken we functies: def

Nadere informatie

Release notes PCTrans. Release notes PCTrans. Aantekeningen voor PCTrans 5.0 ( )

Release notes PCTrans. Release notes PCTrans. Aantekeningen voor PCTrans 5.0 ( ) Aantekeningen voor 5.0 (20180501) De preferences schermen voor de file in-uitvoer zijn gewijzigd. Zowel de lay-out als een aantal benamingen is aangepast. Tevens is er een optie bijgekomen voor de standaard

Nadere informatie

Nieuw in MatrixKozijn Hout 3.2

Nieuw in MatrixKozijn Hout 3.2 Nieuw in MatrixKozijn Hout 3.2 In de nieuwe versie van MatrixKozijn zijn er een aantal onderdelen toegevoegd, maar ook zijn er een aantal zaken gewijzigd en/of verbeterd: BIM Dit is een nieuwe uitbreidingsmodule

Nadere informatie

Klassen & objecten, overerving, abstracte klassen, debuggen, interfaces, formulieren, polymorfie, statische methoden, event-handlers

Klassen & objecten, overerving, abstracte klassen, debuggen, interfaces, formulieren, polymorfie, statische methoden, event-handlers 1 Inhoud Klassen & objecten, overerving, abstracte klassen, debuggen, interfaces, formulieren, polymorfie, statische methoden, event-handlers 2 Geluidsbronnen simulator, deel 2 Inleiding De weergave versnellen

Nadere informatie

DATAMODELLERING SIPOC

DATAMODELLERING SIPOC DATAMODELLERING SIPOC Inleiding In dit whitepaper wordt de datamodelleervorm Sipoc beschreven. Deze modelleervorm staat in verhouding tot een aantal andere modelleervormen. Wil je een beeld krijgen van

Nadere informatie

Variabelen en statements in ActionScript

Variabelen en statements in ActionScript Ontwikkelen van Apps voor ios en Android Variabelen en statements in ActionScript 6.1 Inleiding Als we het in de informatica over variabelen hebben, bedoelen we een stukje in het geheugen van de computer

Nadere informatie

Onafhankelijke verzamelingen en Gewogen Oplossingen, door Donald E. Knuth, The Art of Computer Programming, Volume 4, Combinatorial Algorithms

Onafhankelijke verzamelingen en Gewogen Oplossingen, door Donald E. Knuth, The Art of Computer Programming, Volume 4, Combinatorial Algorithms Onafhankelijke verzamelingen en Gewogen Oplossingen, door Donald E. Knuth, The Art of Computer Programming, Volume 4, Combinatorial Algorithms Giso Dal (0752975) Pagina s 5 7 1 Deelverzameling Representatie

Nadere informatie

Modelleren en Programmeren

Modelleren en Programmeren Modelleren en Programmeren Jeroen Bransen 13 november 2015 Expressies Functies Ingebouwde functies Variabelenbereik Inleveropgave 1 Terugblik Programma is een lijst van opdrachten Terugblik Programma is

Nadere informatie

RIAXION DOSSIER HANDLEIDING

RIAXION DOSSIER HANDLEIDING RIAXION DOSSIER HANDLEIDING Versie 1.0 Status: Definitief Datum: 8-3-2012 Deventer Inhoud 1. VRAGENLIJST... 3 1.1. Het maken van een vragenlijst... 4 1.2. Vragen toevoegen aan een vragenlijst... 5 1.3.

Nadere informatie

Release notes PCTrans. Release notes PCTrans. Aantekeningen voor PCTrans 5.0 ( )

Release notes PCTrans. Release notes PCTrans. Aantekeningen voor PCTrans 5.0 ( ) Aantekeningen voor 5.0 (20161128) Opgeloste problemen: In module Projection: RD x,y,h, geographic wordt het inlezen van een file met X,Y,H coordinaten niet goed verwerkt. De beperkingen zoals beschreven

Nadere informatie

Software Factories. Toepassing van Domain Specific Languages. achtergrond

Software Factories. Toepassing van Domain Specific Languages. achtergrond In de software-industrie zijn budget- en deadline-overschrijdingen aan de orde van de dag, er wordt vaak niet aan de gestelde verwachtingen voldaan. Dit kan worden voorkomen door software-ontwikkeling

Nadere informatie

WETENSCHAPPEN Oefeningen. LES 1 - Baksteen in Grasshopper. Matthias Dziwak Tobias Labarque Rinus Roelofs

WETENSCHAPPEN Oefeningen. LES 1 - Baksteen in Grasshopper. Matthias Dziwak Tobias Labarque Rinus Roelofs WETENSCHAPPEN Oefeningen LES 1 - Baksteen in Grasshopper Matthias Dziwak Tobias Labarque Rinus Roelofs LES 1 Deel 1 Inleiding Rhinoceros en Grasshopper Deel 2 De bouw van vier bakstenen muren in Grasshopper

Nadere informatie

Het belang van. Data Modellering. GEMINIT Training. Data Modellering. Frédéric BARBIER

Het belang van. Data Modellering. GEMINIT Training. Data Modellering. Frédéric BARBIER Het belang van Data Modellering Studiedag Informatiemanagement Politeia, 22 februari 2013, Gent Open data en de cloud: een revolutie in de informatiehuishouding van de overheid Training Data Modellering

Nadere informatie

Stacks and queues. Hoofdstuk 6

Stacks and queues. Hoofdstuk 6 Hoofdstuk 6 Stacks and queues I N T R O D U C T I E In dit hoofdstuk worden drie datastructuren stack, queue en deque behandeld. Om deze datastructuren te implementeren, worden onder andere arrays en linked

Nadere informatie

Samenvoeging document syntax

Samenvoeging document syntax Samenvoeging document syntax Kleos beschikt over een interne model- en tekstblokbewerker om de aanmaak en de bewerking van modellen en tekstblokken mogelijk te maken. U kunt hiervoor echter ook een externe

Nadere informatie

WMW. l ^ ^ ^ c h t resujjp. gramma. Directoraat-Generaal Rijkswi

WMW. l ^ ^ ^ c h t resujjp. gramma. Directoraat-Generaal Rijkswi Directoraat-Generaal Rijkswi MM WMW l ^ ^ ^ c h t resujjp gramma Rapportnr Datum Status Auteurs BSW/PvAP 95-50 november 1995 definitiefv ir. P.H. Willems (TNO-Bouw); ing. J.M. Bouman-Eijs (TNO-Bouw); drs.

Nadere informatie

DOSSIERS HANDLEIDING. OTYS Recruiting Technology

DOSSIERS HANDLEIDING. OTYS Recruiting Technology DOSSIERS HANDLEIDING OTYS Recruiting Technology OTYS RECRUITING TECHNOLOGY WWW.OTYS.EU 16-8-2017 Versie 2.0 2 INHOUD 1 Introductie... 4 1.1 Over dossiers in OTYS Go!... 4 1.2 Doel instructie... 5 1.3 Opbouw

Nadere informatie

Project Fasering Documentatie Applicatie Ontwikkelaar

Project Fasering Documentatie Applicatie Ontwikkelaar Project Fasering Documentatie Applicatie Ontwikkelaar Auteurs: Erik Seldenthuis Aminah Balfaqih Datum: 31 Januari 2011 Kerntaak 1 Ontwerpen van applicaties De volgordelijke plaats van de documenten binnen

Nadere informatie

Solution Builder Lines. User Guide

Solution Builder Lines. User Guide Solution Builder Lines User Guide 2016, Eddon Software B.V., s-hertogenbosch. Niets van deze uitgave mag worden verveelvoudigd en/of openbaar gemaakt door middel van druk, fotokopie, microfilm of op welke

Nadere informatie

Inleiding Programmeren 2

Inleiding Programmeren 2 Inleiding Programmeren 2 Gertjan van Noord November 28, 2016 Stof week 3 nogmaals Zelle hoofdstuk 8 en recursie Brookshear hoofdstuk 5: Algoritmes Datastructuren: tuples Een geheel andere manier om te

Nadere informatie

( ) Hoofdstuk 4 Verloop van functies. 4.1 De grafiek van ( ) 4.1.1 Spiegelen t.o.v. de x-as, y-as en de oorsprong

( ) Hoofdstuk 4 Verloop van functies. 4.1 De grafiek van ( ) 4.1.1 Spiegelen t.o.v. de x-as, y-as en de oorsprong Hoofdstuk 4 Verloop van functies Met DERIVE is het mogelijk om tal van eigenschappen van functies experimenteel te ontdekken. In een eerste paragraaf onderzoeken we het verband tussen de grafieken van

Nadere informatie

Excel reader. Beginner Gemiddeld. bas@excel-programmeur.nl

Excel reader. Beginner Gemiddeld. bas@excel-programmeur.nl Excel reader Beginner Gemiddeld Auteur Bas Meijerink E-mail bas@excel-programmeur.nl Versie 01D00 Datum 01-03-2014 Inhoudsopgave Introductie... - 3 - Hoofdstuk 1 - Databewerking - 4-1. Inleiding... - 5-2.

Nadere informatie

OEFENINGEN PYTHON REEKS 1

OEFENINGEN PYTHON REEKS 1 Vraag 1: Expressies & Types OEFENINGEN PYTHON REEKS 1 Python maakt gebruik van enkele vaak voorkomende (data)types. Zo zijn er integers die behoren tot de gehele getallen (VB: 3), zijn er float s die behoren

Nadere informatie

Handleiding voor de DWO-auteursomgeving voor het maken van eigen opdrachten

Handleiding voor de DWO-auteursomgeving voor het maken van eigen opdrachten Handleiding voor de DWO-auteursomgeving voor het maken van eigen opdrachten 1 Inhoud Inleiding 3 Voorbereiding 3 Een bestaande activiteit aanpassen 4 Een volledig nieuwe activiteit ontwerpen 5 Berekeningen,

Nadere informatie