Macro's

Macro's zijn afkortingen voor een reeks constructiestappen, zoals subroutines of methodes bij programmeertalen. Om een macro te maken moet je iets construeren en dan de macro aanleren wat er moet uitgevoerd worden. Macro's hebben parameters die bepalen van welke voorwerpen er vertrokken wordt. Ze hebben ook doelen, die bepalen wat er geconstrueerd moet worden.

Bekijk bijvoorbeeld de constructie van de omcirkel van een gegeven driehoek. De cirkel is het doelobject, de drie hoekpunten van de driehoek zijn de startparameters van de macro.

Je kan ook in een beschrijvende constructie met macro's werken. Voor meer details verwijzen we je naar de documentatie van beschrijvende constructies.

Standaardmacro's

Als je PeL opstart zoekt het programma in de huidige directory naar het bestand .nl_default.mcr. Als het programma dit bestand vindt, worden alle macro's uit dit bestand ingeladen. Je kan deze macro's dan gewoon gebruiken in de constructie.

Deze macro's zijn als het ware 'beschermd', d.w.z. dat ze niet gewist worden als je een nieuwe constructie inlaadt en dat ze ook niet meebewaard worden met een constructie.

Een macro definiëren

Om een macro te definiëren gebruik je het werktuig . De parameters moet je met de muis kiezen. Het werktuig ziet er dan zo uit: . Als je nog eens op het werktuigicoon klikt, gaat het dan over in volgende toestand: . Je ziet dan in de constructie alleen die voorwerpen die construeerbaar zijn op basis van de parameters. Duid alle doelen aan. Als je geen doelvoorwerpen kiest, maakt de macro alle zichtbare voorwerpen aan. Doelvoorwerpen krijgen de standaard ingestelde kleur en stijl. Alle andere voorwerpen krijgen dezelfde stijl als in de macrodefinitie, met uitzondering van zwarte voorwerpen die de standaardkleur krijgen. Alle verborgen voorwerpen zullen ook verborgen geconstrueerd worden. Er is echter ook een optie in het dialoogvenster om automatisch alle voorwerpen die geen doelvoorwerp zijn te verbergen, zelfs als ze zichtbaar waren in de constructie.

Als de macro gebruikt wordt in de beschrijvende modus kan de gebruiker alleen aan doelvoorwerpen een naam toekennen. Daarom moet je altijd minstens 1 doelvoorwerp kiezen.

Als je nog eens op het macrowerktuig klikt, kan je de macro definiëren. Je voert de naam en een regeltje commentaar in. Eventueel kan je ook de vragen voor elke parameter wijzigen..

Hier kan je de macronaam, commentaar en de vragen voor de parametervoorwerpen invoeren. Het is ook mogelijk al dan niet aan te geven of de macro alle voorwerpen op de doelen na moet verbergen. Deze voorwerpen kunnen zelfs helemaal verborgen worden.

Een speciale eigenschap is dat je parameters kan verbergen. Als een verborgen punt gekozen wordt als een macroparameter tijdens de macrodefinitie, en als dat punt overeen komt met een gegeneerd punt bij de selectiefaze tijdens het uitvoeren van de macro, dan zal dit nieuw punt na het uitvoeren van de macro ook verborgen zijn. Dit mechanisme laat bvb. toe om punten als 'hints' te gebruiken.

Het is mogelijk om als vaste parameter een voorwerp A te kiezen door "=A" te gebruiken als parametervraag. Er komt dan bij het uitvoeren van de macro geen vraag om een voorwerp als parameter aan te duiden. In de plaats daarvan zal het voorwerp "A" gebruikt worden — als er een is en als het het juiste type heeft.

Het is tenslotte ook mogelijk om bij het uitvoeren van de macro de gebruiker te vragen naar een waarde voor een cirkel met vaste straal (geen punt op de cirkel), een hoek met een vaste grootte of een uitdrukking. Hiervoor geef in het laatste veld de naam van de cirkel of de hoek in. De gebruiker krijgt dan een dialoogvenster waarin hij een willekeurige wiskundige uitdrukking kan invullen.

Een macro laten vragen naar een uitdrukking laat toe om flexibele constructies te maken, bvb. een lijnstuk AB vergroten met een factor die de gebruiker kan kiezen. Het is zelfs mogelijk om negatieve factoren in te geven, want de coördinaten van het gegenereerd punt mogen beide uitdrukkingen zijn.

Bewaren en inladen

Je kan een macro ofwel samen met de constructie ofwel apart bewaren en inladen. Het bestandsformaat voor een macrobestand is identiek aan het normale bestandsformaat, maar het bevat alleen macro's en geen constructie. Als de optie om macro's samen met de constructie te bewaren 'aan' staat, dan worden de macro's samen met de constructie bewaard. Als dit soort van bestand wordt ingeladen krijgt de gebruiker een waarschuwingsboodschap als hij een bestaande macro wil overschrijven.

Om je constructie naar HTML te exporteren moet je de macro's samen met de constructie bewaren

Een macro uitvoeren

Dit doe je met het "macro uitvoeren" werktuig, dat je ofwel via de iconen in de werktuiglijst, ofwel in het menu ("Macro's->Macro uitvoeren") selecteert. Je moet dan de gewenste macro selecteren uit een lijstje. Als je echter de 'Shift' toets ingedrukt houdt terwijl je op het icoontje drukt, wordt de laatst uitgevoerde macro automatisch gekozen. Het programma vraagt dan naar elke parameter en toont telkens de voorwerpen die het verwachte type hebben.

Je kan ook een macro starten met de rechtermuisknop (als er maar 1 muisknop is, doe je dit door een speciale toets ingedrukt te houden als je klikt, bvb. bij Mac: 'Appeltje' toets indrukken en dan klikken). Kies dan gewoon de gewenste macro uit het lijstje.

Als je de tekst "Spatiebalk kiest ..." te zien krijgt, kan je het voorwerp gewoon selecteren door op de spatiebalk te duwen. Dit is vooral handig als je de macro verschillende keren moet uitvoeren.

Je kan ook de selectie van macroparameters vast maken door de 'shift' toets ingedrukt te houden tijdens de selectie. Hierdoor wordt er een kopie van de macro gebruikt die dan in deze parameters vast is. Het is natuurlijk niet zinvol om alle paramters vast te maken.

De macro wordt dan uitgevoerd. Als de macro een waarde nodig heeft voor de straal van een cirkel of voor een hoek, dan krijg je een dialoogvenster, waar je dan een uitdrukking kan invullen

Soorten parameters

Punten zijn het gemakkelijkst te gebruiken als macroparameters. Andere types voorwerpen zijn echter ook mogelijk.

Lijnstukken, stralen (halfrechten), rechten en cirkels genereren 'secundaire' paramters, nl. de twee eindpunten of het middelpunt. Op die manier wordt het gebruik van de macro iets eenvoudiger. Je moet er echter wel voor zorgen dat je dit soort van paramters (lijnstukken, stralen, ...) correct gebruikt. Zo bvb. als de macro twee concentrische cirkels als parameters verwacht, moet je ook daadwerkelijk twee concentrische cirkels opgeven. Of ook, als een macro twee lijnstukken AB en BC als invoer verwacht, dan moet je ook twee lijnstukken waarvan het beginpunt van de tweede samenvalt met het eindpunt van de eerste, aanduiden.

Rechten en stralen bestaan in twee verschillende types: ofwel met twee bepalende punten, ofwel met 1 bepalend punt (bvb. evenwijdige rechte). In de macro worden rechten, stralen en lijnstukken bewaard zonder punten als deze punten niet gebruikt worden in de macroconstructie of als er maar 1 bepalend punt is. Je kan in dat geval elke willekeurige rechte als parameter kiezen. Als de macroconstructie echter wel een van de twee bepalende rechten gebruikt, moet je een rechte,... van hetzelfde type (met twee bepalende punten) gebruiken.

Wiskundige uitdrukkingen in Macros

Als je een uitdrukking in een macro gebruikt, zullen de parametervoorwerpen die in deze uitdrukking voorkomen correct worden vervangen. Een raad echter: vermijd dit soort van "constructie", aangezien je je er niets anders dan problemen mee op de hals haalt.