Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Lisp
  entlast

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:  entlast (630 mal gelesen)
gmk
Mitglied
Dipl.-Ing.(FH) Vermessung


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

Beiträge: 667
Registriert: 23.10.2002

Autocad 2004, WS CadCompass, Normica V2000, WinXP Prof., AMD Athlon 64 X2, 2GB, NVIDIA GeForce 7600GS, HP1055CM

erstellt am: 14. Mai. 2004 16:02    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

entweder ich seh den wald vor lauter bäumen nicht oder ....

kann mir jemand erklären was in der zeile
"a  ;Returns last main entity or subentity" passiert und warum??

;aus der autocad-hilfe zu entlast

(DEFUN lastent (/ a b)         
  (IF (SETQ a (ENTLAST))        ;Gets last main entity
    (WHILE (SETQ b (ENTNEXT a))  ;If subentities follow, loops until there are no more subentities
      (SETQ a b)               
    ) ;WHILE
  ) ;IF
  a                              ;Returns last main entity or subentity
) ;DEFUN

ciao georg

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

CADmium
Moderator
Maschinenbaukonstrukteur




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

Beiträge: 13508
Registriert: 30.11.2003

.

erstellt am: 14. Mai. 2004 16:14    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 gmk 10 Unities + Antwort hilfreich

Entlast ... liefert das letze erstellte Element der Zeichnungsdatenbank. Ist das jedoch einen Polylinie oder eine Blockreferenz mit Attributen, so folgen diesem (entlast)-Element naco die Stützpunkte bzw. die Attribute. Und das wirklich allerletzte Element zurückzuliefern ist Aufgabe der Funktion.
.. und while wird solange abgearbeitet bis Prüfausdruck nil wird... d.h. Rückgabe von While ist immer nil.
Deshalb wird innerhalb der while-schleife die interessierende Variable a gesetzt. Und damit die funktion lastend nicht den Rückgabewert von while oder if zurückliefert wird in der angesprochenden Zeile nochmal a als Rückgabewert definiert.

entspricht ungefähr dem !a in der Befehlszeile wenn a mit (setq a 3123) gesetz wurde... einfach mal ausprobiern!

Hoffe mich nicht verhaspelt zu haben ..

------------------
- Thomas -

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

gmk
Mitglied
Dipl.-Ing.(FH) Vermessung


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

Beiträge: 667
Registriert: 23.10.2002

Autocad 2004, WS CadCompass, Normica V2000, WinXP Prof., AMD Athlon 64 X2, 2GB, NVIDIA GeForce 7600GS, HP1055CM

erstellt am: 14. Mai. 2004 16:25    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 thomas!

danke für deine erklärung.
bis zu der zeile "a...." war mir die funktion schon klar, nur
dann komm ich nicht mehr mit:

a entspricht also (SETQ a a) oder (PRINC a) ... ??
d.h. eine variable irgendwo im programmtext ohne funktion gibt automatisch ihren inhalt zurück? (kapier ich ehrlich gesagt nicht ganz)

ciao georg

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

CAD-Huebner
Ehrenmitglied V.I.P. h.c.
Verm.- Ing., ATC-Trainer



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

Beiträge: 9732
Registriert: 01.12.2003

One AutoCAD 2.5 - 2023, Civil 3D, Win10/win11

erstellt am: 14. Mai. 2004 16:36    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 gmk 10 Unities + Antwort hilfreich

Genau,
einfach a z. B. am Ende einer Funktion gibt den Inhalt der Variablen a zurück.
damit es nicht übersehen wird schreiben viele noch eine Leerfunktion drumherum z.B. (PROGN a)
es ginge auch (SETQ a a) aber mmh sieht irgendwie uncool aus.
a reicht.

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

gmk
Mitglied
Dipl.-Ing.(FH) Vermessung


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

Beiträge: 667
Registriert: 23.10.2002

Autocad 2004, WS CadCompass, Normica V2000, WinXP Prof., AMD Athlon 64 X2, 2GB, NVIDIA GeForce 7600GS, HP1055CM

erstellt am: 14. Mai. 2004 16:47    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

mapcar
Mitglied
CADmin



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

Beiträge: 1250
Registriert: 20.05.2002

Time flies like an arrow, fruit flies like a banana (Groucho Marx)

erstellt am: 14. Mai. 2004 23:15    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 gmk 10 Unities + Antwort hilfreich

> sieht irgendwie uncool aus

Isses auch. (setq a a) ist einfach Blödsinn.

Das Prinzip, das hinter der Zeile mit dem a steht, nennt sich Evaluation;-) Bei einer zusammengesetzten Zeile wie dieser:

(cons a b)

werden erstmal die drei Symbole cons, a und b evaluiert.
cons evaluiert zu #<SUBR @0a92b258 CONS>
a evaluiert zu (beispielsweise) (1 2 3)
b evaluiert zu (beispielsweise) (4 5 6)

Und dann evaluiert das Ganze zu (1 2 3 4 5 6)

Bei tiefer verschachtelten Ausdrücken fallen ein paar Evaluationen mehr an, und bei weniger verschachtelten Ausdrücken eben weniger.

In der Zeile, wo nur a drinsteht, wird eben nur einmal evaluiert! Und da eine Funktion das Ergebnis der letzten in dieser Funktion stattgefundenen Evaluation zurückgibt, wird eben das zurückgegeben, was an a als Wert gebunden war.

Das ist genau das Selbe, wie wenn wir in der Acad-CommandLine !a eingeben. das ! ist ja nur ein Signal an AutoCad, dass jetzt Lisp kommt (weil ja keine Klammer drum ist). Acad leitet aber nur das a an Lisp weiter - nicht das Ausrufungszeichen, und dann findet genau das hier beschriebene statt.

Nur am Rande - Auch das hier ist fehlerfreier Lisp-Code (nein, es fehlen keine Kommentarzeichen!):

Code:

(defun test()
  (setq Mist!'Mist!)
  Hmm, irgendwas wollte ich doch hier demonstrieren!
  Was war das denn nur?
  Mist!
)

Kleiner Hinweis: Da können !, ? und , drinsein, aber niemals ein . !!!

Viel Sinn macht die Funktion allerdings nicht;-)))

Gruß, Axel

------------------

Meine AutoLisp-Seiten
Meine private Homepage
Mein Angriff auf dein Zwerchfell
Mein Lexikon der Fotografie
Mein gereimtes Gesülze
Meine Überzeugung...

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

gmk
Mitglied
Dipl.-Ing.(FH) Vermessung


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

Beiträge: 667
Registriert: 23.10.2002

Autocad 2004, WS CadCompass, Normica V2000, WinXP Prof., AMD Athlon 64 X2, 2GB, NVIDIA GeForce 7600GS, HP1055CM

erstellt am: 15. Mai. 2004 15:27    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

hi axel!

hab' mir schon gedacht (...gehofft) dass von dir noch was kommt.
jetzt nur noch eine frage: warum a und nicht (a), wäre doch eigentlich logischer.

ciao georg

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

Dabrunz
Mitglied



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

Beiträge: 127
Registriert: 28.05.2003

erstellt am: 17. Mai. 2004 11:39    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 gmk 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von gmk:
[..]
jetzt nur noch eine frage: warum a und nicht (a), wäre doch eigentlich logischer.

Nein, denn a ist schließlich keine Funktion und ausgewertet wird schließlich jeder Ausdruck, auch eine atomarer.

Achim Dabrunz

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