Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Lisp
  Lisp Problem...

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:  Lisp Problem... (1210 mal gelesen)
sonnen4tel
Mitglied


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

Beiträge: 8
Registriert: 30.07.2003

erstellt am: 30. Jul. 2003 09:18    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

Hai!

Bei eioner Usereingabe in einem Lispprogramm erscheint folgende Fehlermeldung:

Kann nicht zu LISP zurückkehren.

Warum kommt das und wie kann ich das verhindern?

Danke
Klaus

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

Brischke
Moderator
CAD on demand GmbH




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

Beiträge: 4171
Registriert: 17.05.2001

AutoCAD 20XX, defun-tools (d-tools.eu)

erstellt am: 30. Jul. 2003 09:21    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 sonnen4tel 10 Unities + Antwort hilfreich

Hallo Klaus,

das jetzt hier verbal zu umschreiben fällt mir schwer. Wenn's nicht geheim ist, dann stelle doch die LISP mal hier in's Forum, dann schauen ich und andere mal drüber.

Bei Fragen ...

Grüße Holger

------------------
Holger Brischke
CADlon - Lisp over night!
Irgendwann muß man schlafen, deshalb:
+!+!+Urlaub vom 01.08.-30.08.2003+!+!+

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

sonnen4tel
Mitglied


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

Beiträge: 8
Registriert: 30.07.2003

erstellt am: 30. Jul. 2003 09: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

Hai!

Das Problem ist, dass ich das Problem bei mir nicht nachvollziehen kann. Ein Kunde von mir hat irgendeine Autocadapplikation laufen - und ich vermute, dass die das Problem verursacht.

Ist diese Meldung generell unbekannt?

Kann man folgendermaßen leicht reproduzieren:
Befehl: (defun c:test()
(_> (setq X (getpoint "Punkt"))
(_> )
C:TEST

(getstring "Befehl:")
(command (eval (c:test)))

Kann nicht zu LISP zurückkehren.
"(command (eval (c:test)))"

Ist es möglich, dass die eingesetzte Applikation die Befehlszeile umgebogen hat und die Eingaben selber auswerten will?
Wenn ja, wie kann ich das umgehen?

Danke und lg
Klaus

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

CADchup
Ehrenmitglied V.I.P. h.c.




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

Beiträge: 3329
Registriert: 14.03.2001

Sicher ist, dass nichts sicher ist. Selbst das nicht.
Joachim Ringelnatz

erstellt am: 30. Jul. 2003 10:52    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 sonnen4tel 10 Unities + Antwort hilfreich

Hi,

das kann doch so gar nicht funktionieren.
(getstring) will einen String und keinen Lisp-Ausdruck.

Gruß
CADchup

------------------
www.cadditions.de

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


Ex-Mitglied

erstellt am: 30. Jul. 2003 12:17    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

Hi,

sag mal was bezweckst du mit der Zeile (getstring "Befehl:"). Diese Zeile steht so ohne Zusammenhang dort. Du weißt das Ergebnis dieser Zeile nicht einmal einer Variable zu, geschweige denn, du benutzt sie in einem anderen Lisp-Ausdruck.
Daweiteren versuchst du die Funktion c:test mit (command (eval (c:test))) als AutoCAD-Befehl auszuführen. Das wird so nicht funktonieren, da es keinen AutoCAD-Befehl gibt, der aussieht wie ein Punkt.
Du machst hier nämlich folgendes:
1. die Funktion c:test fragt nach einem Punkt. Das Ergebnis ist also eine Koordinate.
2. Die Koordinate wird evaluiert, d.h. sie wird mit Command wie ein AutoCAD-Befehl behandelt und es wird versucht diesen auch auszuführen.
3. Da das nicht geht - es gibt ja kein Befehl der wie eine Koordinate aussieht -, wird diese Fehlermeldung auch erzeugt.

Also eine ganz normale AutoCAD-Reaktion.
Tipp: SChreib malwas du damit bezwecken willst, vielleicht kann ich Dir helfen.

Jürgen


sonnen4tel
Mitglied


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

Beiträge: 8
Registriert: 30.07.2003

erstellt am: 30. Jul. 2003 14:04    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

Hai und Danke!

Mein Programm lautet CreateDXF und ich will, dass es bei einem Kunden einwandfrei funktioniert. Der Kunde erhält aber immer folgende Ausgabe:

..............
Erzeuge Layer Beschriftung...

*************************************************************
Eingabeteil....................................................
Geben Sie bitte die Artikelnummer ein:
Kann nicht zu LISP zurückkehren.

Geben Sie den Nullpunkt an:
Kann nicht zu LISP zurückkehren.

Ungültiger Punkt.

Geben Sie den Nullpunkt an:
Ungültiger Punkt.

Geben Sie den Nullpunkt an:
Ungültiger Punkt.

Geben Sie den Nullpunkt an:
Kann nicht zu LISP zurückkehren.

Ungültiger Punkt.

Geben Sie den Nullpunkt an:
Erzeuge neues Attribut: 'BREITE*TIEFE*HOEHE'
Erzeuge neuen Block mit Namen: (setq cvp (getvar "CVPORT"))(princ)
Ungültiger Block Name.
; Fehler: Funktion abgebrochen
....................

und das immer bei den Codezeilen:
(while (= (setq ArtNummer
  (getstring "\nGeben Sie bitte die Artikelnummer ein: ")
    )
    ""
)
  )

.

Mit dem Beispiel

Befehl: (defun c:test()
(_> (setq X (getpoint "Punkt"))
(_> )
C:TEST

(getstring "Befehl:")
(command (eval (c:test)))

Kann nicht zu LISP zurückkehren.
"(command (eval (c:test)))"

wollte ich nur zeigen wie man die Fehlermeldung reproduzieren kann.

Ist ein bisschen kompliziert zu erklären. Aber ich hoffe ich habs damit geschafft.

lg und Danke

Klaus

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

J.Becker
Mitglied
Dipl.-Ing. Versorgungstechnik


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

Beiträge: 78
Registriert: 28.05.2003

ADT 2007, Windows XP, SP2, MAP, MCAD, Inventor

erstellt am: 30. Jul. 2003 21:21    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 sonnen4tel 10 Unities + Antwort hilfreich

Also tut mir leid, ich werde daraus nicht schlau.
Das kann nicht funktionieren

Jürgen

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

J.Becker
Mitglied
Dipl.-Ing. Versorgungstechnik


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

Beiträge: 78
Registriert: 28.05.2003

erstellt am: 30. Jul. 2003 21:22    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 sonnen4tel 10 Unities + Antwort hilfreich

Habe noch etwas vergessen. Es kann damit zusammenhängen, dass AutoCAD eine Systemvariable nicht richtig verarbeiten kann.

Jürgen

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

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: 31. Jul. 2003 21:38    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 sonnen4tel 10 Unities + Antwort hilfreich

Wäre besser, diese Diskussion liefe im Lisp-Forum. Aber egal.

"Kann nicht zu AutoLisp zurückkehren" bedeutet: Der AutoLisp-Interpreter ist nicht reentrant. Das wiederum bedeutet: Es gibt nur eine laufende Instanz des Interpreters. Jeder Versuch, über (command ...) zu AutoCAD zu wechseln und dort eine Befehlseingabe abzusetzen, die mit '(' oder '!' beginnt, zum Scheitern verurteilt ist. Diese beiden Zeichen veranlassen AutoCAD nämlich normalerweise, zum Lisp-Interpreter zu wechseln. Da der aber schon aktiv ist, kommt diese Meldung.

Also: jedwede Konstruktion wie (command "(...)") oder (command "!...") geht in die Hose. Der Fehlerkommt aber auch, wenn man versucht, innerhalb eines (getpoint ...) ein Lisp-Utility wie z.B. "ref" zu starten, um den Punkt einzugeben.

Soweit dazu, wo diese Fehlermeldung herkommt. Das ist hier aber nicht ersichtlich - das Beispiel mit c:test ist anders und erzeugt auch einen ganz anderen Fehler:

(defun c:test()(setq x(getpoint"Punkt: ")))

Abgesehen davon, dass hier vermutlich unwissentlich eine globale Variable erzeugt wird, ist die Funktion korrekt. Sie gibt den vom User eingegebenen Punkt zurück.

(c:test) => (1.234 7.654 0.0)

Jetzt soll aber dieser Punkt auch noch evaluiert werden! Punkte sind Listen, und wenn eine Liste evaluiert werden soll, dann muss das erste Element eine ausführbare Funktion sein. 1.234 ist aber eine Zahl und keine Funktion, und deswegen kommt hier die Fehlermeldung "bad function 1.234" (deutsch: "Fehlerhafte Funktion 1.234"). Und das zu Recht. Ich glaube auch nicht, dass dein AutoCAD da anders ist als alle anderen, Klaus.

Das (getstring "Befehl: ") wurde schon bemängelt - auch ich weiss nicht, wozu das dienen soll ausser zur Verwirrung.

Ich würde also erstmal meinen eigenen Code aufräumen, bevor ich irgendwelche Applikationen verdächtige. Jedenfalls stelle ich in 99,9% aller Fälle fest, dass es meine eigenen Fehler waren, die die Probleme verursacht haben. Ausnahmen gibt es, z.B. bei den Reaktoren, aber nicht, wenn es um ein paar Zeilen halbgaren Code geht.

Gruss, 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

sonnen4tel
Mitglied


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

Beiträge: 8
Registriert: 30.07.2003

erstellt am: 01. Aug. 2003 16:17    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

Hai Alex!

Danke für Deine ausführliche Beschreibung. Gebe zu, dass das mit dem getstring und der Funktion c:test etwas verwirrend war. Sollte aber nur als Beispiel dienen, dass es diese Fehlermeldung gibt.

Zurück:
Was kann noch einen Unterscheid machen, wenn ein Programm auf einem System mit Autocad 2000 und einer Datei läuft, und auf einem anderen Autocad 2000 mit derselben Zeichnung nicht läuft?

Ich programmiere seit 10 Jahren sehr intensiv mit Lisp - und ob mein Programm einen Fehler hat oder nicht kann ich mittlerweile sehr gut einschätzen.

Danke und lg
Klaus


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

Safa
Mitglied
Dipl.-Ing.


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

Beiträge: 13
Registriert: 20.07.2003

erstellt am: 29. Aug. 2003 17:44    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 sonnen4tel 10 Unities + Antwort hilfreich

Hallo Klaus,
ich glaube Du bist erfahren genug mir helfen zu können.
Ich habe ein 3D-Lisp Programm.Ich kann diese Programm bei Win98/Autocad14 sehr gut benutzen, aber gleiche Programm bei Win2000/Autocad2002 funktioniert einfach nicht. Obwohl ich vorher gesehen habe, dass das funktioniert.
System ladet ordnungsgemaes Lisp-Dateien.Was mache ich falsch?
Grüss
Safa

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

STRGALTDEL
Mitglied
Tischler


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

Beiträge: 61
Registriert: 15.02.2003

AutoCAD2002 SP1, IntelliCAD2001
Win XP SP1,PIII 1GHz, 328MB RAM,
nvidia GFORCE 4

erstellt am: 31. Aug. 2003 22:12    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 sonnen4tel 10 Unities + Antwort hilfreich

Hallo Safa,

Ich glaube hier gehts gleich gut zur Sache...

nicht bös gemeint, aber:

Stelle die selbe Frage doch besser im Lisp-Forum; denn dort lümmeln sich alle, die dir helfen können und noch besser, alle mit ähnlichen Problemen die es auch interessiert.
Vielleicht giebt es auch schon eine Antwort auf deine Frage!?

...schöne Grüße, Frank

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

CADwiesel
Moderator
CAD4FM UG




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

Beiträge: 1968
Registriert: 05.09.2000

AutoCAD, Bricscad
Wir machen das Mögliche unmöglich

erstellt am: 01. Sep. 2003 08:21    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 sonnen4tel 10 Unities + Antwort hilfreich

@sonnen4tel

Willkommen im Forum.

Du solltest dein Lisp Prog mal im Vlide-Editor Debuggen und mal die Variablen und Rückgaben überwachen. dan hast du den Fehler sicherlich schnell entdeckt. Da du ja auch schon lange im Geschäft bist, dürfte das eigentlich schnell erledigt sein.

@Safa
In der Autocadversion 2000 (R15) hat sich schon einiges gegenüber der R14 geändert. Ich wage mal einen 'Schuss ins Blaue' dein Lisp arbeitet mit command Befehlen, die nicht an die 2000 angepasst wurden. bei einigen Befehlen muss ein minus (-) vor die Commands gesetzt werden.

------------------
Gruß
CADwiesel

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