Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Lisp
  ACTION_TILE mit liste

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:  ACTION_TILE mit liste (602 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: 28. Okt. 2022 12:57    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

Servus!

Kann man anstatt

(action_tile "A" "(machwas 1")
(action_tile "B" "(machwas 2")

auch eine Liste verwenden?

(FOREACH n '(("A" 1) ("B" 2)) (action_tile (NTH 0 n) "(machwas (NTH 1 n))"))

Hintergrund: Ich möchte die keys plus Zusatzinfos aus einer Parameterdatei einlesen und dann eine temp. DCL-Datei schreiben.
Die DCL-Auswahl geht noch, dann bricht das Programm ab "Fehlerhafter Argumenttyp: consp nil".


Ciao Georg

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

cadffm
Moderator
良い精神




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

Beiträge: 21533
Registriert: 03.06.2002

Alles

erstellt am: 28. Okt. 2022 13: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 gmk 10 Unities + Antwort hilfreich

STRINGs sind fett hervorgehoben
(action_tile "A" "(machwas 1")
(action_tile "A" "(machwas 1)")
(action_tile "B" "(machwas 2")
(action_tile "B" "(machwas 2)")


(FOREACH n '(("A" 1) ("B" 2)) (action_tile (NTH 0 n) "(machwas (NTH 1 n))"))


(NTH 0 n) => "A" = String, gut
"(machwas (NTH 1 n))" = String, gut - aber der Stringinhalt ist halt Mist? "(machwas (NTH 1 n))"

(FOREACH n '(("A" 1) ("B" 2)) (action_tile (NTH 0 n) (strcat "(machwas " (itoa(NTH 1 n)) ")")))

oder gleich (FOREACH n '(("A" "1") ("B" "2")) und
(FOREACH n '(("A" 1) ("B" 2)) (action_tile (NTH 0 n) (strcat "(machwas " (NTH 1 n) ")")))


oder

(FOREACH n '(("A" 1) ("B" 2)) (action_tile (NTH 0 n) (vl-princ-to-string (list 'machwas (NTH 1 n)))))
(FOREACH n '(("A" 1) ("B" 2)) (action_tile (car n) (vl-princ-to-string (list 'machwas (last n)))))
wobei ich "2er Listen nicht leiden kann, dafür gibt es dottedpairs, also
(FOREACH n '(("A" . 1) ("B" . 2)) (action_tile (car n) (vl-princ-to-string (list 'machwas (cdr n)))))

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: 28. Okt. 2022 14:07    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

Merci, passt 

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: 01. Nov. 2022 12:01    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

Servus!

Muss jetzt doch nochmal zu dem Thema fragen, evtl. kann mir jemand helfen.
Warum gibt mir Variante 1 den richtigen Wert für var zurück und Variante 2 nil?
Hab ich evtl einen Denkfehler mit foreach und das geht nicht mit action_tile ?


(SETQ dcl_id (LOAD_DIALOG "sbem.dcl"))
(IF (NOT (NEW_DIALOG "sbem_dcl" dcl_id)) (exit))

;******** Variante 1 *************
;(ACTION_TILE "1" "(SETQ var \"1\") (DONE_DIALOG)")
;(ACTION_TILE "2" "(SETQ var \"2\") (DONE_DIALOG)")
;(ACTION_TILE "3" "(SETQ var \"3\") (DONE_DIALOG)")
;(ACTION_TILE "cancel" "(SETQ var \"Abbruch\") (DONE_DIALOG)")

;******** Variante 2 *************
(FOREACH n '(("1" 0.305 1) ("2" 0.405 5) ("3" 0.505 7))
  (ACTION_TILE (NTH 0 n) "(SETQ var (NTH 0 n)) (DONE_DIALOG)")
)
(ACTION_TILE "cancel" "(SETQ var \"Abbruch\") (DONE_DIALOG)")
;*********************************

(START_DIALOG)
(UNLOAD_DIALOG dcl_id)

(ALERT var)

Ciao Georg

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: 03. Nov. 2022 13:20    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:
Servus!

Muss jetzt doch nochmal zu dem Thema fragen, evtl. kann mir jemand helfen.
Warum gibt mir Variante 1 den richtigen Wert für var zurück und Variante 2 nil?
Hab ich evtl einen Denkfehler mit foreach und das geht nicht mit action_tile ?


(SETQ dcl_id (LOAD_DIALOG "sbem.dcl"))
(IF (NOT (NEW_DIALOG "sbem_dcl" dcl_id)) (exit))

;******** Variante 1 *************
;(ACTION_TILE "1" "(SETQ var \"1\") (DONE_DIALOG)")
;(ACTION_TILE "2" "(SETQ var \"2\") (DONE_DIALOG)")
;(ACTION_TILE "3" "(SETQ var \"3\") (DONE_DIALOG)")
;(ACTION_TILE "cancel" "(SETQ var \"Abbruch\") (DONE_DIALOG)")

;******** Variante 2 *************
(FOREACH n '(("1" 0.305 1) ("2" 0.405 5) ("3" 0.505 7))
  (ACTION_TILE (NTH 0 n) "(SETQ var (NTH 0 n)) (DONE_DIALOG)")
)
(ACTION_TILE "cancel" "(SETQ var \"Abbruch\") (DONE_DIALOG)")
;*********************************

(START_DIALOG)
(UNLOAD_DIALOG dcl_id)

(ALERT var)

Ciao Georg


Trivial: die zweite Variante gibt korrekt die Auswertung des letzten Ausdrucks der FOREACH-Schleife zurück, und das dürfte NIL sein. Es geht Dir ja aber nicht um die Rückgabe der FOREACH-Schleife, sondern um die Zuweisung zur Variablen VAR

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: 03. Nov. 2022 13:45    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

Servus Tom,

ich hatte ja schon die Vermutung dass hier mein Denkfehler liegt.

Ich hatte mir das immer so vorgestellt dass sich der Interpreter die ACTION_TILE Funktionen der Reihe nach "merkt" und beim Drücken eines Buttons dann die entsprechende ACTION_TILE Funktion ausführt. Das hätte mit FOREACH ja funktioniert...

Wie kann ich denn dann die Liste  '(("1" 0.305 1) ("2" 0.405 5) ("3" 0.505 7)), die aus einer Parameterdatei kommen soll, in die einzelnen ACTION_TILE Funktionen einlesen. Hab jetzt nur noch die Idee eine Sublisp-Datei aus der Hauptfunktion zu schreiben und die dann mit APPLOAD zur Laufzeit einzulesen .... oder bin ich da auch auf dem Holzweg?

Ciao Georg


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: 03. Nov. 2022 14:16    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:
Servus Tom,

ich hatte ja schon die Vermutung dass hier mein Denkfehler liegt.


Sorry, mein Fehler. Natürlich wird durch das ACTION_TILE festgelegt, was beim Drücken des Tiles passiert.

Wenn Du das Tile (Button?) mit key "3" drückst, wird dann für VAR NIL ausgegeben? Ein ALERT kann ja kein NIL ausgeben, sondern nur Strings. Was hast Du denn da sonst noch alles an Code vebastelt? Was ist der Rückgabewert welcher Funktion?

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: 03. Nov. 2022 14:19    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

Hallo Georg,
Du könntest doch den ganzen String mit STRCAT zusammenbauen, dass müßte funktionieren:
Code:

(foreach n '(("1" 0.305 1) ("2" 0.405 5) ("3" 0.505 7))
  (action_tile (car n)
    (strcat "(setq var \"" (car n) "\")(DONE_DIALOG)")))


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

Jörn
http://www.bosse-engineering.com

das Flächenstempel_Tool

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: 03. Nov. 2022 14:31    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 joern bosse:
Hallo Georg,
Du könntest doch den ganzen String mit STRCAT zusammenbauen, dass müßte funktionieren:
Code:

(foreach n '(("1" 0.305 1) ("2" 0.405 5) ("3" 0.505 7))
  (action_tile (car n)
    (strcat "(setq var \"" (car n) "\")(DONE_DIALOG)")))


Das ist mit Sicherheit der Fehler. Sorry, ist mir nicht aufgefallen.

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: 03. Nov. 2022 14:49    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

Zitat:
Original erstellt von joern bosse:
Hallo Georg,
Du könntest doch den ganzen String mit STRCAT zusammenbauen, dass müßte funktionieren:
Code:

(foreach n '(("1" 0.305 1) ("2" 0.405 5) ("3" 0.505 7))
  (action_tile (car n)
    (strcat "(setq var \"" (car n) "\")(DONE_DIALOG)")))




Super Jörn, das war die Lösung.
Der Sebastian hat es ja in der ersten Antwort auch schon so vorgeschlagen aber ich hab's wohl falsch bei mir umgesetzt.

Danke Euch allen für die Hilfe !

Ciao Georg

[Diese Nachricht wurde von gmk am 03. Nov. 2022 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