Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Lisp
  Variabeln in Punktlisten

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
  
Request a special discount on NVIDIA RTX 5000 Ada Generation GPU !, eine Pressemitteilung
Autor Thema:  Variabeln in Punktlisten (354 / mal gelesen)
Code Kian
Mitglied
Technischer Systemplaner (in Ausbildung)


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

Beiträge: 27
Registriert: 18.09.2023

erstellt am: 17. Nov. 2023 10:23    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 ihr freundlichen Helfer  
ich habe zwei variabeln erstellt die nach ints fragen
Code:
(setq modulanzahlverti (getint))
(setq modulanzahlhori (getint)


und dann wollte ich mit entmake diese linien erstellen:
Code:
(setq seitenstreifen1 (list '(0 . "line") '(strcat 8 . "Modul " (itoa modulanzahlverti) "px" (itoa modulanzahlhori)) (cons 10 anfangsliste) (cons 11 endlisteseite1)))

bekomme aber den fehler:" Fehler: Überzählige CDR-Exemplare in Listenpaar mit Punkttrennung in Eingabe"

zur verständnis: mein ziel ist es dass ein layer erstellt wird (oder wenn er schon existiert, dass die linie in den layer gelegt wird) der zb "Modul 3px10" heisst (falls modulanzahl hori 10 und modulanzahl verti 3 ist). normalerweise funktioniert dass bei mir mit strcat und itoa - ich glaube dass der Punkt in der Liste das Problem hervorruft.
Danke im Vorraus
Gruß Kian

[Diese Nachricht wurde von Code Kian am 17. Nov. 2023 editiert.]

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

Peter2
Ehrenmitglied V.I.P. h.c.




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

Beiträge: 3849
Registriert: 15.10.2003

Win 10 bzw. 11 / 64 Pro
AutoCAD MAP 3D 2023
BricsCAD 24

erstellt am: 17. Nov. 2023 10: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 Nur für Code Kian 10 Unities + Antwort hilfreich

so auf die schnelle - das strcat sitzt am falschen platz. du darfst den code 8 nicht mit einpacken - nur den layernamen selbst

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: 22275
Registriert: 03.06.2002

Alles

erstellt am: 17. Nov. 2023 10: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 Code Kian 10 Unities + Antwort hilfreich


Hi,


>>"Ich glaube dass der Punkt in der Liste das Problem hervorruft."
Das könnte man theoretisch so sagen, aber das wäre vermutlich nicht hilfreich.
Die Meldung brachte dich zu dem Punkt und da bist du auch richtig,
schau also was du da macht und was ggf. nicht passt.


(setq seitenstreifen1
      (list '(0 . "line")
            '(strcat 8 . "Modul " (itoa modulanzahlverti) "px" (itoa modulanzahlhori))
            (cons 10 anfangsliste)
            (cons 11 endlisteseite1)
      )
)

Ergibt zum Beispiel diese Liste, seitenstreifen1 =

      (
        (0 . "line")
        (strcat 8 . "Modul " (itoa modulanzahlverti) "px" (itoa modulanzahlhori))
        (10 . 55)
        (11 . 66)
      )


ein (falscher) Versuch der Korrektur:


(setq seitenstreifen1
      (list '(0 . "line")
            '(8 . (strcat "Modul " (itoa modulanzahlverti) "px" (itoa modulanzahlhori))
            (cons 10 anfangsliste)
            (cons 11 endlisteseite1)
      )
)

Ergibt zum Beispiel diese Liste, seitenstreifen1 =

      (
        (0 . "line")
        (8 . (strcat 8 . "Modul " (itoa modulanzahlverti) "px" (itoa modulanzahlhori))(10 . 55)(11 . 66))


ein weiterer Versuch der Korrektur:

(setq seitenstreifen1
      (list '(0 . "line")
            (cons 8 (strcat "Modul " (itoa modulanzahlverti) "px" (itoa modulanzahlhori)))
            (cons 10 anfangsliste)
            (cons 11 endlisteseite1)
      )
)

Ergibt zB. diese Liste, seitenstreifen1 =

      (
        (0 . "line")
        (8 . "Modul 3px5")
        (10 . 55)
        (11 . 66)
      )

hilfts?

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

Code Kian
Mitglied
Technischer Systemplaner (in Ausbildung)


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

Beiträge: 27
Registriert: 18.09.2023

erstellt am: 17. Nov. 2023 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

Yes danke dir hilft mal wieder sehr. Brauchte allerdings bisschen zum nachvollziehen. - Einmal zur verständnis :

1.

Code:
(setq seitenstreifen1
      (list '(0 . "line")
            '(strcat 8 . "Modul " (itoa modulanzahlverti) "px" (itoa modulanzahlhori))
            (cons 10 anfangsliste)
            (cons 11 endlisteseite1)
      )
)

funktioniert nicht weil strcat eine zeichenkette erwartet aber 8 . offensichtlich keine ist

2.

Code:
(setq seitenstreifen1
      (list '(0 . "line")
            '(8 . (strcat "Modul " (itoa modulanzahlverti) "px" (itoa modulanzahlhori))
            (cons 10 anfangsliste)
            (cons 11 endlisteseite1)
      )
)
warum der nicht funktioniert bzw [(0 . "line")
        (8 . (strcat 8 . "Modul " (itoa modulanzahlverti) "px" (itoa modulanzahlhori))(10 . 55)(11 . 66))] ausgibt verstehe ich nicht. dass strcat müsste doch die strings miteinander verbinden? warum macht er (strcat) es da nicht


3. 

Code:
(setq seitenstreifen1
      (list '(0 . "line")
            (cons 8 (strcat "Modul " (itoa modulanzahlverti) "px" (itoa modulanzahlhori)))
            (cons 10 anfangsliste)
            (cons 11 endlisteseite1)
      )
)
    Klappt so wie es soll, danke dir
Liebe Grüße Kian

[Diese Nachricht wurde von Code Kian am 17. Nov. 2023 editiert.]

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: 22275
Registriert: 03.06.2002

Alles

erstellt am: 17. Nov. 2023 12: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 Code Kian 10 Unities + Antwort hilfreich

>>" ich glaube dass der Punkt in der Liste das Problem hervorruft."
Würde ich nicht so beschreiben, auch wenn dieser nicht irrelevant ist bei dem Thema.


Schau mal, ganz ohne strcat:

Befehl: (setq Kian '(1 . 2))
(1 . 2)

Befehl: (setq Kian '(1 . 2 3))
; Fehler: Überzählige CDR-Exemplare in Listenpaar mit Punkttrennung in Eingabe

Befehl: (setq Kian '(1 2 3))
(1 2 3)


Edit:
Mit strcat als Funktion hat das nichts zutun, wenngleich es richtig ist: STRCAT dürfen nur Strings übergeben werden!
Schau dir die Fehlermeldung nocheinmal an:
Fehler: Überzählige CDR-Exemplare in Listenpaar mit Punkttrennung in Eingabe"
Ein Listenpaar, eine DottedList, ist eine besondere Liste mit zwei Ausdrucken
und die Besonderheit ist das diese durch einen Punkt getrennt vorliegen.
(70 . 1) statt (70 1)

Der Fehler bezieht sich auf ein überzähliges cdr-Exemplar und hier zeigt sich auch ein Unterschied zwischen normaler Liste und einer DottedList:
(cdr  (70 1)) -> liefert eine Liste mit dem Listenrest: (1)
(cdr (70 . 1)) -> liefert den zweiten Ausdruck: 1
(70 1 2 3 4) -> okay
(70 . 1 2 3) -> nicht okay

Immer gut, www.autolisp.info


>>"warum der nicht funktioniert bzw .. ausgibt verstehe ich nicht. dass strcat müsste doch die strings miteinander verbinden? warum macht er (strcat) es da nicht "
strcat erhält überhaupt keine Argumente von dir, genauer gesagt soll strcat überhaupt nicht ausgeführt werden,
das hast du dem Programm mit dem Apostroph mitgeteilt und so dem Programm gesagt: Damit NÜSCHT machen!

'(strcat 8 . "Modul " (itoa modulanzahlverti) "px" (itoa modulanzahlhori)) (cons 10 anfangsliste) (cons 11 endlisteseite1))
kann auch so geschrieben werden:
(QUOTE(hier passiert NICHTS, der Inhalt muss nur den Konventionen entsprechen und das trifft auf eine Liste (1 . 2 3 4 5 6) nicht zu))


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)2024 CAD.de | Impressum | Datenschutz