CADsite forum

AutoCAD => Autolisp => Topic gestart door: roy_043 op zo 24 05 2009, 15:09:28

Titel: Hoe kun je Lisp-variabelen direct gebruiken in knop-macro's? (Opgelost)
Bericht door: roy_043 op zo 24 05 2009, 15:09:28
Beste forumleden,

Ik wil lisp-variabelen gebruiken in knop-macro's. Dit lukt mij alleen via een omweg door namelijk eerst tekening-variabelen in te stellen (voorbeeld 1). De lisp-variabelen direct gebruiken lukt niet (voorbeeld 2).

(De gele gedeelten in de voorbeelden worden t.z.t. vervangen door een lisp-routine.)

VB.1 werkt maar is omslachtig, bovendien kan useri1 al voor iets anders worden gebruikt:
^C^C^C(setq myScale 5)(setq myBlock "blockName")(setvar "useri1" myScale)(setvar "insname" myBlock)_Insert;;\(getvar "useri1");;0;

VB.2 werkt echter niet:
^C^C^C(setq myScale 5)(setq myBlock "blockName")_Insert;(myBlock);\(myScale);;0;

Weet iemand hier een oplossing voor?

Groet, Roy.
Titel: Re:Hoe kun je Lisp-variabelen direct gebruiken in knop-macro's?
Bericht door: HofCAD op ma 25 05 2009, 09:25:01
Beste Roy,

Omdat myBlock geen routine is, kun je die niet aanroepen met (myBlock).
MyBlock is een AutoLisp variabele die je aanroept met uitroepteken(!),
dus je macro wordt als volgt:

^C^C^C(setq myScale 5)(setq myBlock "blockName");_-Insert;!myBlock;\!myScale;;0;

Met vriendelijke groet, HofCAD CSI.
Titel: Re:Hoe kun je Lisp-variabelen direct gebruiken in knop-macro's?
Bericht door: roy_043 op ma 25 05 2009, 10:19:53
Beste HofCAD,

Bedankt voor jouw reactie.
!lispVariabele werkt wel bij het opgeven van de schaal maar niet bij het opgeven van de bloknaam. Mogelijk ligt dit aan Bricscad 7.
Maar goed, het is natuurlijk geen probleem om de tekeningvariabele insname te gebruiken voor de bloknaam. Die is er immers speciaal voor bedoeld. Mijn macro wordt dus:

^C^C^C(setvar "insname" "blockName")(setq myScale 5)_-Insert;;\!myScale;;0;

Groet, Roy.
Titel: Re:Hoe kun je Lisp-variabelen direct gebruiken in knop-macro's? (Opgelost)
Bericht door: roy_043 op vr 09 10 2009, 13:11:28
Ter completering:

Door een bericht van Atwist:
http://www.cadsite.be/smf/index.php?topic=3679.msg18820#msg18820
heb ik de variabele TEXTEVAL ontdekt.

Als TEXTEVAL op 1 staat werkt de macro van HofCad wel:
^C^C^C(setq myScale 5)(setq myBlock "blockName")_-Insert;!myBlock;\!myScale;;0;
Titel: Re:Hoe kun je Lisp-variabelen direct gebruiken in knop-macro's? (Opgelost)
Bericht door: HofCAD op ma 12 10 2009, 08:55:35
Beste Roy_043,

De macro
^C^C^C(setq myScale 5)(setq myBlock "blockName");_-Insert;!myBlock;\!myScale;;0;
werkt bij mij onafhankelijk van de stand van de AutoCAD variable Texteval.

Met vriendelijke groet, HofCAD CSI.

PS: Let op ;
Titel: Re:Hoe kun je Lisp-variabelen direct gebruiken in knop-macro's? (Opgelost)
Bericht door: roy_043 op ma 12 10 2009, 09:38:33
Dan wijkt Bricscad op dit punt af van Autocad. Naar mijn idee is het gedrag van Bricscad logischer. Je kunt immers ook een block hebben met de naam !myBlock. Of kunnen in Autocad blocknamen niet met een uitroepteken beginnen? In Bricscad kan dit wel.

Even zoeken:
http://www.google.nl/search?q=autocad+block+names+invalid+characters
Resultaat het uitroepteken lijkt toegestaan:
<>/\":?|,=` are invalid characters in block names.
Bron: http://www.jtbworld.com/autocadtips.htm
Titel: Re:Hoe kun je Lisp-variabelen direct gebruiken in knop-macro's? (Opgelost)
Bericht door: roy_043 op ma 12 10 2009, 09:46:27
Citaat van: HofCAD op ma 12 10 2009, 08:55:35
^C^C^C(setq myScale 5)(setq myBlock "blockName");_-Insert;!myBlock;\!myScale;;0;
...
PS: Let op ;
De extra ; voor _-insert is in Bricscad niet nodig.