| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
| |
| PNY WIRD VON NVIDIA ZUM HÄNDLER DES JAHRES GEWÄHLT, eine Pressemitteilung
|
Autor
|
Thema: defun - lokale variablen (1882 mal gelesen)
|
richycad Mitglied
Beiträge: 33 Registriert: 01.10.2010 AutoCAD 2015 Windows 7 Enterprise 64-bit HP ZBook 17 G3 Intel(R) Core(TM) i7-6700HQ CPU @ 2.60GHz, 2601 MHz, 4 Kern(e), 8 logische(r) Prozessor(en) Memory: 8192MB RAM Card name: NVIDIA Quadro M3000M
|
erstellt am: 02. Mrz. 2011 16:42 <-- editieren / zitieren --> Unities abgeben:
Hallo zusammen, mir ist wirklich nicht klar ob man die variablen zurücksetzen sollen. Ich sehe keine Auswirkung in diese beiden Beispiele. Wenn ich die Variable "var0" prüfe, gibt er in beiden Fällen "nil" zurück. (defun var_test0 (/ var0) (setq var0 10) ) ODER (defun var_test0 ( ) (setq var0 10) ) Ich bin um jede Aufklärung dankbar. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
wronzky Ehrenmitglied V.I.P. h.c. CAD-Dienstleistungen für Architekten
Beiträge: 2154 Registriert: 02.05.2005 CAD: AutoCAD 2.6 bis 2014 ADT 2005 - 2014 Arcibem System: Windows 2000, XP, NO VISTA Internet-Startseite: http://www.archi.de
|
erstellt am: 02. Mrz. 2011 16:50 <-- editieren / zitieren --> Unities abgeben: Nur für richycad
Das kann nicht sein: erstes Beispiel: Befehl: (var_test0) -> 10 Befehl: !var0 -> nil zweites Beispiel: Befehl: (var_test0) -> 10 Befehl: !var0 -> 10 Wie prüfst Du denn var0? Grüsse, Henning [EDIT] - Klammern vergessen - [/EDIT] ------------------ Henning Jesse VoxelManufaktur Computer-Dienstleistungen für Architekten und Ingenieure http://www.voxelman.de
[Diese Nachricht wurde von wronzky am 02. Mrz. 2011 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
archtools Mitglied
Beiträge: 970 Registriert: 09.10.2004 Entwickler für AutoCAD, BricsCAD u.a., alle Systeme
|
erstellt am: 02. Mrz. 2011 20:51 <-- editieren / zitieren --> Unities abgeben: Nur für richycad
Zitat: Original erstellt von wronzky: Das kann nicht sein:erstes Beispiel: Befehl: (var_test0) -> 10 Befehl: !var0 -> nil zweites Beispiel: Befehl: (var_test0) -> 10 Befehl: !var0 -> 10 Wie prüfst Du denn var0? Grüsse, Henning [EDIT] - Klammern vergessen - [/EDIT]
Er hat's offensichtlich in der umgekehrten Reihenfolge ausprobiert :-) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
richycad Mitglied
Beiträge: 33 Registriert: 01.10.2010 AutoCAD 2015 Windows 7 Enterprise 64-bit HP ZBook 17 G3 Intel(R) Core(TM) i7-6700HQ CPU @ 2.60GHz, 2601 MHz, 4 Kern(e), 8 logische(r) Prozessor(en) Memory: 8192MB RAM Card name: NVIDIA Quadro M3000M
|
erstellt am: 03. Mrz. 2011 15:40 <-- editieren / zitieren --> Unities abgeben:
Zitat: Original erstellt von archtools: Er hat's offensichtlich in der umgekehrten Reihenfolge ausprobiert :-)
Danke euch beiden. Ich habe defun von Visual Lisp geladen ABER nicht in Autocad Befehlleiste (var_test0) eingeben Mir ist jetzt klar das es nicht immer wichtig ist die lokalen Variablen zurückzusetzen...ist aber eine gute Übung dieses immer zu tun wenn man etwas komplizierteres schreibt. Falls es jemandem interessiert, ich war ganz fleißig und habe DEFUN für mich ausgearbeitet. Viele Grüße Richy Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
wronzky Ehrenmitglied V.I.P. h.c. CAD-Dienstleistungen für Architekten
Beiträge: 2154 Registriert: 02.05.2005 CAD: AutoCAD 2.6 bis 2014 ADT 2005 - 2014 Arcibem System: Windows 2000, XP, NO VISTA Internet-Startseite: http://www.archi.de
|
erstellt am: 03. Mrz. 2011 18:28 <-- editieren / zitieren --> Unities abgeben: Nur für richycad
Hallo Richy, damit Du dich noch etwas vertieft mit Variablen beschäftigen kannst, hier mal was aus meinen Übungsunterlagen: Code: (defun c:variablen-test ( / b) (setq a 1);global (setq b 2);lokal (setq c nil);global (princ (strcat "Variable a (global): " (vl-prin1-to-string a)))(terpri) (princ (strcat "Variable b (lokal): " (vl-prin1-to-string b)))(terpri) (princ (strcat "Variable c (vor set-variable1): " (vl-prin1-to-string c)))(terpri) (set-variable1) (princ (strcat "Variable c (nach set-variable1): " (vl-prin1-to-string c)))(terpri) (princ (strcat "Variable a (vor set-variable2): " (vl-prin1-to-string a)))(terpri) (set-variable2) (princ (strcat "Variable a (nach set-variable2) jetzt: " (vl-prin1-to-string a)))(terpri) (set-variable3) (princ (strcat "Variable a (nach set-variable3) jetzt immer noch: " (vl-prin1-to-string a)))(terpri) (set-variable4 a) (princ (strcat "Variable a (nach set-variable4) auch jetzt immer noch: " (vl-prin1-to-string a)))(terpri) (set-variable5 'a); Achtung: a ist gequoted (princ (strcat "Variable a (nach set-variable5) aber jetzt: " (vl-prin1-to-string a)))(terpri) (princ "Teste die Variablen: !a !b !c !x") (prin1) );Variable c ist global, Variable b ist definiert, da während des Aufrufs der Funktion vorhanden (defun set-variable1 () (setq c 3) (princ (strcat "Übrigens Variable b (während set-variable1) ist auch hier: " (vl-prin1-to-string b)))(terpri) ) ;Variable a ist global, wird während des Ablaufs der Funktion geändert (defun set-variable2 () (setq a 4) ) ;Variable a ist lokal, ändert die globale Variable a nicht (defun set-variable3 ( / a) (setq a 5) ) ;Argument a ist lokal, ändert die globale Variable a nicht (defun set-variable4 (a /) (setq a 6) ) ;Argument x (lokal) enthält die gebundene Variable a, nicht den Wert von a, und ändert diese! (defun set-variable5 (x /) (set x 6) )
Wenn Du verstehst, warum wo welche Variable gilt, und geändert wird, fällst Du so schnell nicht mehr herein.Grüsse, Henning ------------------ Henning Jesse VoxelManufaktur Computer-Dienstleistungen für Architekten und Ingenieure http://www.voxelman.de Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
richycad Mitglied
Beiträge: 33 Registriert: 01.10.2010 AutoCAD 2015 Windows 7 Enterprise 64-bit HP ZBook 17 G3 Intel(R) Core(TM) i7-6700HQ CPU @ 2.60GHz, 2601 MHz, 4 Kern(e), 8 logische(r) Prozessor(en) Memory: 8192MB RAM Card name: NVIDIA Quadro M3000M
|
erstellt am: 04. Mrz. 2011 13:00 <-- editieren / zitieren --> Unities abgeben:
|