Cabri-FAQ (33)

[ Alle Vragen | Meetkunde | Cabri ]

vorige  Vorige   begin  Begin   volgende  Volgende

Vraag 33
Hoe komt het dat een macro gedefinieerd voor een lijnstuk en een driehoek niet goed werkt?

Antwoord

Zoals bekend is het mogelijk eenzelfde macro voor verschillende objecten een bepaalde constructie te laten uitvoeren (zie hiervoor de pagina "Macro:Cirkel3P"; en wel de paragraaf Definitie uitbreiden en ook de pagina "Opbouw van een macro", de paragraaf "Regels").

Ter beantwoording van de vraag gaan we uit van een voorbeeld.

faq331 We willen een vermenigvuldiging van een lijnstuk of een driehoek met factor 2 tov. een punt in eenzelfde macro vastleggen.
De punten A', B', P', Q', R' zijn beelden van O bij een puntspiegeling in de originele punten.

We leggen nu als eerste de vermenigvuldiging van de driehoek vast met:
   Beginobjecten: punt O, driehoek PQR
   Eindobjecten: P'Q'R'
Deze definitie wordt in eerste instantie in het macro-bestand (gecodeerd) opgeslagen als Method 0 (Mth: 0).

Daarna leggen we de definitie voor het lijnstuk vast met:
   Beginobjecten: lijnstuk AB, punt O
   Eindobjecten: lijnstuk A'B'
Nu moeten we voorafgaand aan het Bewaren op disk kiezen voor Aanvullen of Vervangen.Uiteraard kiezen we voor Aanvullen.

Mth: 0
CN:2, ON:3, FN:3, PO:2
CT:
segment, CS 2, V, W, t, DS:1 1, GT:0, V, nSt
point, CS 0, R, W, t, DS:1 1, GT:1, V, nSt
Const:
Sym, Mth:0, 1, 0, CN:2, VN:1, Const: 4 1, R, W, t, DS:1 1, GT:1, V, nSt
Sym, Mth:0, 1, 0, CN:2, VN:1, Const: 4 2, R, W, t, DS:1 1, GT:1, V, nSt
Seg, Mth:0, 1, 0, CN:2, VN:0, Const: 5 6, V, W, t, DS:1 1, GT:0, V, nSt
        Mth: 1
CN:2, ON:4, FN:4, PO:3
CT:
point, CS 0, R, W, t, DS:1 1, GT:1, V, nSt
triangle, CS 3, V, W, t, DS:1 1, GT:0, V, nSt
Const:
Sym, Mth:0, 1, 0, CN:2, VN:1, Const: 1 2, R, W, t, DS:1 1, GT:1, V, nSt
Sym, Mth:0, 1, 0, CN:2, VN:1, Const: 1 3, R, W, t, DS:1 1, GT:1, V, nSt
Sym, Mth:0, 1, 0, CN:2, VN:1, Const: 1 4, R, W, t, DS:1 1, GT:1, V, nSt
Tr, Mth:0, 1, 0, CN:3, VN:0, Const: 6 7 8, V, W, t, DS:1 1, GT:0, V, nSt

De laatste definitie (die voor het lijnstuk) wordt nu Method 0; de bestaande definitie (voor de driehoek) wordt gewijzigd in Method 1 (Mth: 1).
Zie hierboven voor een deel van de code in het macro-bestand.
De code van Method 0 (de laatst gedefinieerde, dus die voor het lijnstuk) staat daardoor als eerste in het bestand.
Gebruiken we nu de aldus gedefinieerde macro voor een driehoek, dan is Method 0 ook van toepassing op een driehoek, namelijk op de aangewezen zijde van de driehoek. We zien dan op het scherm iets als:

faq332a faq332b En dat is inderdaad niet wat we verwachten!

N.B.
Het "hernummeren" van een Method bij Aanvullen van de definitie vindt niet altijd plaats!

Wanneer we de macro echter definieren beginnend met het lijnstuk en daarna voor de driehoek (Method 0 werkt dan op een driehoek, Method 1 op een lijnstuk) dan verloopt een en ander wel zoals de bedoeling was.

faq333a faq333b Merk op, dat bij de juiste definitie toch voorafgaand aan het selecteren van de driehoek de aanwijzingstekst "Deze zijde van de driehoek" verschijnt.
Echter na het klikken wordt nu toch de vergrote driehoek getekend.

download Zie Download.
De bestanden die op het bovenstaande betreking hebben, zijn Dubbel.fig, Dubbel_Goed.mac en Dubbel_Fout.mac.


vorige  Vorige   begin  Begin   volgende  Volgende

begin pagina
[faq33.htm] laatste wijziging op: 27-08-02