Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Lisp
  Problem mit is_cancel = true

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:  Problem mit is_cancel = true (1501 mal gelesen)
Niggemann
Mitglied



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

Beiträge: 159
Registriert: 31.10.2003

Win 98 Se, ACAD 2004, XP Prof, ACAD 2004 und ACAD 2010

erstellt am: 21. Mai. 2008 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

Hallo Forum,
habe folgendes Problem:
In einem DCL Fenster möchte ich die Felder mit unterschiedlichen Werten füllen,
einmal mit den Werten der Liste A, einmal mit den Werten der Liste B. Dieses klappt auch einwandfrei. Mein lisp hat ein Button "Weiter" und ein Button "Exit".
(action_tile "WEITER" "(if (= POS_STUECK 1)(POS_STUECKLISTE 0)(POS_ENDE))")
(action_tile "EXIT"  "(if (= POS_STUECK 1)(POS_STUECKLISTE 0)(done_dialog 0))")
Mit "Weiter" kann ich Problemlos wieder zurück schalten und die vorherigen Werte wieder laden. Mit "Exit" schließt sich das Fenster komplet, es soll dann aber auch wieder auf die vorherigen Werte zurück schalten. Dabei habe ich heraus gefunden, das es wohl an der Zeile mit "is_cancel = true" in meiner DCL Datei liegt.
: button {
  label = "e&Xit";
  key = "EXIT";
  width = 9;
  is_cancel = true;
}
lasse ich "is_cancel = true" weg klappt es, nur dann kann ich das Fenster nicht mehr mit ESC schließen.
Hat einer eine Idee wie man beides unter eine Hut bekommt.

mfg
Niggemann

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

Dorfy
Mitglied
Double-Dipl.-Ing. Bleistiftanspitzer


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

Beiträge: 900
Registriert: 21.07.2006

AutoCad2007, ProE, HiCad

erstellt am: 22. Mai. 2008 06:03    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 Niggemann 10 Unities + Antwort hilfreich

Morgen,
versuche mal Deine gesamte Funktion mit folgenden Zeilen

  (while (and(/= abbr t)(= catchit nil))
    (setq catchit (vl-catch-all-apply 'deinefunktion))
  );while

abzufangen...
Mfg Heiko

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

joern bosse
Ehrenmitglied
Dipl.-Ing. Vermessung


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

Beiträge: 1734
Registriert: 11.10.2004

Window 10
ACAD 2021
CIVIL 2021
BricsCAD V14-V22
Intel(R) Core(TM)i5-8250U CPU @ 1.60GHz 1.80 GHz
16.0GB RAM
NVIDIA GeForce GTX 1050<P>

erstellt am: 22. Mai. 2008 07:43    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 Niggemann 10 Unities + Antwort hilfreich

Hallo Niggemann,
ohne das ich Deine Funktionen kenne auf Verdacht:
Code:

(action_tile "EXIT"  "(if (= POS_STUECK 1)(POS_STUECKLISTE 0)(progn  (POS_ENDE)(done_dialog 0)))")

Durch das Progn wird die Funktion (POS_ENDE) vor dem verlassen des Dialogs noch ausgeführt.

------------------
viele Grüße

Jörn

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

Niggemann
Mitglied



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

Beiträge: 159
Registriert: 31.10.2003

Win 98 Se, ACAD 2004, XP Prof, ACAD 2004 und ACAD 2010

erstellt am: 22. Mai. 2008 19: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

Danke für die schnellen Antworten,
@ Heiko,
werde mich mal mit deinem Vorschlag befassen, bin aber der Meinung es muß einfacher gehen.
@ Jörn,
die Funktion (POS_ENDE) ermittelt bei einem Normalen schließen des Fensters nur
Massen wie Gewicht, Arbeitszeiten usw.., speichert diese, und schließt das Fenster.
Die Variable POS_STUECK hat die Werte 0 oder 1, 0 = Standart Werte, 1 = Erweiterte Werte. Zwischen diesen Werten möchte ich hin und herschalten, dieses wird in der Funktion POS_STUECKLISTE gemacht. Wenn ich aber der Meinung bin das ich die Erweiterten Werte mit "EXIT" oder mit oder mit "Esc" verlassen will, sollen eben die Standart Werte wieder angezeigt werden, denn das Programm möchte ich noch nicht verlassen.
Wie schon gesagt wenn ich  "is_cancel = true" weg lasse klappt es.

Grüße
Niggemann

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

joern bosse
Ehrenmitglied
Dipl.-Ing. Vermessung


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

Beiträge: 1734
Registriert: 11.10.2004

Window 10
ACAD 2021
CIVIL 2021
BricsCAD V14-V22
Intel(R) Core(TM)i5-8250U CPU @ 1.60GHz 1.80 GHz
16.0GB RAM
NVIDIA GeForce GTX 1050<P>

erstellt am: 23. Mai. 2008 07: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 Nur für Niggemann 10 Unities + Antwort hilfreich

Hallo Niggemann,
hast Du is_cancel mehrfach eingesetzt, z.B. für den standardmäßigen "cancel"-Button?? Dann würde eventuell dieser durch die ESC-Taste angesprochen werden. Vielleicht solltest Du mal ein bißchen Code hier reinstellen.
Bist Du schon Schritt für Schritt den Code im Debug-Modus durchgegangen?

------------------
viele Grüße

Jörn

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

Niggemann
Mitglied



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

Beiträge: 159
Registriert: 31.10.2003

Win 98 Se, ACAD 2004, XP Prof, ACAD 2004 und ACAD 2010

erstellt am: 23. Mai. 2008 15:33    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 Jörn,
ich benutze nicht die Standart Button, sondern immer nur die von mir angelegten Button, für OK oder Abbruch. In meiner DCL Datei steht immer "Weiter" für "OK" und "Exit" für "Abbruch" bzw. "cancel". Mehrfach kann "is_cancel" nicht vor kommen, da ich die Einstellung für Überprüfung der DCL Datei auf:
dcl_settings : default_dcl_settings { audit_level = 3; } stehen habe. Dadurch
kommt ein Meker wenn ich ein 2. "is_cancel" drinn hätte.
Beim ausprobieren habe ich dann festgestellt, wenn ich den Button "EXIT" drücke, das Programm ordnungsgemäß zu meiner Funktion "POS_STUECKLISTE" springt und dort meine Variable "POS_STUECK" auf '0' setzt.
Desweitern ist mir aufgefallen wenn ich in meinem Lisp die action_tille "EXIT" auskommentiere und in der DCL Datei den Button "EXIT" mit "is_cancel = true" habe wird das Fenster auch geschlossen. Also egal ob eine "action_tile" da ist oder nicht. Vom Code kann ich dir alles geben was du möchtes, aber über 2000 Zeilen helfen dann auch nicht viel weiter. Sag mir bitte was du sehen möchtes und ich schicke es umgehend.
Zur Info ich schreibe im Moment unter ACAD 2004, da mein Lisp auf einem Rechner laufen muß auf dem ACAD 2004 installiert ist.
Viele Grüße
Niggemann

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

Niggemann
Mitglied



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

Beiträge: 159
Registriert: 31.10.2003

Win 98 Se, ACAD 2004, XP Prof, ACAD 2004 und ACAD 2010

erstellt am: 23. Mai. 2008 15: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

Hallo Heiko,
hab versucht deinen Vorschlag um zusetzen, leider ohne Erfolg. Entweder bin find ich die Richtige Stelle nicht oder es klappt nicht. Was allerdings geklappt hat ist eine neue Möglichkeit ACAD ab zu schießen.
Viele Grüße
Niggemann

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

joern bosse
Ehrenmitglied
Dipl.-Ing. Vermessung


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

Beiträge: 1734
Registriert: 11.10.2004

Window 10
ACAD 2021
CIVIL 2021
BricsCAD V14-V22
Intel(R) Core(TM)i5-8250U CPU @ 1.60GHz 1.80 GHz
16.0GB RAM
NVIDIA GeForce GTX 1050<P>

erstellt am: 23. Mai. 2008 16: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 Niggemann 10 Unities + Antwort hilfreich

Hallo Niggemann,
eigentlich hatte ich gedacht, Du hast ein kleines DCL-Fenster, 2 Listen und eine LISP-Funktion die das DCL-Fenster und die Werte einer der beiden Listen läd. Also wenn Du das nicht absplitten kannst sind 2000 Zeilen für das Forum und für eben mal schauen doch ein bißchen zu viel.

Aber noch eine andere Idee:
Was ist, wenn Du bei Deiner Action-tile Anweisung für den Exit-Button folgendes mit reinschreibst: (setq OK(done_dialog 0)))
Dann kannst du ,nachdem das DCL geschlossen über
(if (= OK 0)(if (= POS_STUECK 1)(POS_STUECKLISTE 0)))
Die Liste wieder zurücksetzen.

Und wenn Du für OK dann nur ein NIL haben solltest, dann weißt Du zumindest, das Deine Action-Tile-Anweisung nicht sauber durchgelaufen ist.

Ich wünsche erstmal ein schönes Wochenende

------------------
viele Grüße

Jörn

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: 23. Mai. 2008 17:06    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 Niggemann 10 Unities + Antwort hilfreich

Hallo Niggemann,
ich denke, Du hast einfach eine Klammer falsch gesetzt. Versuch mal:
Code:
(action_tile "EXIT"  "(if (= POS_STUECK 1)(POS_STUECKLISTE 0))(done_dialog 0)")

In Deiner Funktion wird in einigen Fällen (wenn POS_STUECK 1 ist) ja (done_dialog) nicht ausgeführt:
Code:
(if (= POS_STUECK 1)(POS_STUECKLISTE 0)(done_dialog 0))")
Wenn aber ein Button is_cancel = true hat, und im zugehörigen action_tile kein (done_dialog) ausgeführt wird, wird der Dialog terminiert (term_dialog) (s. [F1].

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

Niggemann
Mitglied



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

Beiträge: 159
Registriert: 31.10.2003

Win 98 Se, ACAD 2004, XP Prof, ACAD 2004 und ACAD 2010

erstellt am: 23. Mai. 2008 21: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


Stueckl1.jpg


Stueckl2.jpg

 
@ Jörn,
nix Fenster zu und wieder auf. Ein Fenster mit unterschiedlichen Listen.
Ich erkläres weiter unten, dann siehst du auch warum ich nicht einfach ein paar Code Zeilen raus schneiden kann.

@ Henning,
die Klammern sind schon Richtig.

An Beide heute Funktioniert es, ich kann mit der Taste "EXIT" von der 2. Liste wieder zur ersten zurück schalten. Warum - wieso, ich weiß es nicht, was ich weiß ist das ich am code nichts geändert habe. Meine einzige Erklärung ist das ich durch das häufige laden des Programms ACAD durch einander gebracht habe, ist mit in 18 Jahren noch nicht passiert. Das Problem mit "Esc" besteht aber immer noch.

Zum Verständniß habe ich 2 Bilder von den Fenster gemacht. Bild Stückl1 ist das Standart Fenster mit einer Stückliste. Da wo der Balken steht gibt es eine Unterstückliste (Baugruppe) diese ist im Bild Stückl2 abgebildet.
Es ist das gleiche Fenster nur der Text im Fensterkopf und einige Buttons deaktiviert bzw aktiviert. Da die Bearbeitung der Artikel der Unterstückliste die gleiche ist wie die Bearbeitung eines Artikels aus der normalen Stückliste, wollte ich mir die Arbeit sparen 2 gleiche Fenster zu erstellen. Aus diesem Grund möchte ich mit der Taste "EXIT" oder mit "Esc" von der Unterstückliste zu der Hauptstückliste wechseln. Hab mir die Sache aber einfacher vorgestellt.

Wünsch euch noch ein schönes Wochenende

viele Grüße
Niggemann

[Diese Nachricht wurde von Niggemann am 23. Mai. 2008 editiert.]

[Diese Nachricht wurde von Niggemann am 23. Mai. 2008 editiert.]

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