FastFiber

Hoe kun je Lisp-variabelen direct gebruiken in knop-macro's? (Opgelost)

Gestart door roy_043, zo 24 05 2009, 15:09:28

Vorige topic - Volgende topic

roy_043

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.

HofCAD

#1
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.
ACADcadabra

roy_043

#2
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.

roy_043

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;

HofCAD

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 ;
ACADcadabra

roy_043

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

roy_043

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.

yoin