Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Lisp
  defun - lokale variablen

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
  
Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte
Autor Thema:  defun - lokale variablen (1851 mal gelesen)
richycad
Mitglied



Sehen Sie sich das Profil von richycad an!   Senden Sie eine Private Message an richycad  Schreiben Sie einen Gästebucheintrag für richycad

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 oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

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



Sehen Sie sich das Profil von wronzky an!   Senden Sie eine Private Message an wronzky  Schreiben Sie einen Gästebucheintrag für wronzky

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 oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für richycad 10 Unities + Antwort hilfreich

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



Sehen Sie sich das Profil von archtools an!   Senden Sie eine Private Message an archtools  Schreiben Sie einen Gästebucheintrag für archtools

Beiträge: 823
Registriert: 09.10.2004

Entwickler für AutoCAD, BricsCAD u.a., alle Systeme

erstellt am: 02. Mrz. 2011 20:51    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für richycad 10 Unities + Antwort hilfreich

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



Sehen Sie sich das Profil von richycad an!   Senden Sie eine Private Message an richycad  Schreiben Sie einen Gästebucheintrag für richycad

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 oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities


variable_am_ende_gelöscht1.txt


variable_am_ende_gelöscht2.txt

 
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



Sehen Sie sich das Profil von wronzky an!   Senden Sie eine Private Message an wronzky  Schreiben Sie einen Gästebucheintrag für wronzky

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 oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für richycad 10 Unities + Antwort hilfreich

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



Sehen Sie sich das Profil von richycad an!   Senden Sie eine Private Message an richycad  Schreiben Sie einen Gästebucheintrag für richycad

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 oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Danke Henning,
eine schöne Routine um Defun deutlich zu machen.
Schönes Wochenende
Richy

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2023 CAD.de | Impressum | Datenschutz