Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  PTC Creo Elements/Programmierung
  NIL is not a structure

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 PTC CREO
  
MAIT übernimmt Kundenstamm von GMCAD, eine Pressemitteilung
Autor Thema:  NIL is not a structure (2633 mal gelesen)
holt
Mitglied
Systembetreuer CAD


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

Beiträge: 714
Registriert: 07.08.2003

Lenovo ThinkStation P360
Core i7-12700@2.10 GHz, 32GB
NVIDIA RTX A2000 12 GB
Creo Elements/Direct Modeling 20.3
Creo Elements/Direct Drafting 20.3
Creo Elements/Direct ModelManager 20.3

erstellt am: 09. Dez. 2011 09:55    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,

ich bin gerade etwas verwirrt:

Code:

(setq property-liste nil)
(setq listenvariable (list (getf property-liste :wertC)))
--> (NIL)
Brauchen würde ich
--> NIL

Wie kann ich das erreichen?

------------------
Gruß aus dem Salzkammergut

Thomas

[Diese Nachricht wurde von holt am 09. Dez. 2011 editiert.]

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

Patrick Weber
Mitglied
Konstruktionstechniker, Admin


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

Beiträge: 659
Registriert: 20.11.2006

erstellt am: 09. Dez. 2011 09:58    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 holt 10 Unities + Antwort hilfreich

(first listenvariable)
(NIL) --> NIL

------------------
Grüße aus Sachsen
pw

Karl Marx ist tot, Einstein ist tot, und mir ist auch schon ganz schlecht!

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

holt
Mitglied
Systembetreuer CAD


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

Beiträge: 714
Registriert: 07.08.2003

Lenovo ThinkStation P360
Core i7-12700@2.10 GHz, 32GB
NVIDIA RTX A2000 12 GB
Creo Elements/Direct Modeling 20.3
Creo Elements/Direct Drafting 20.3
Creo Elements/Direct ModelManager 20.3

erstellt am: 09. Dez. 2011 10:05    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

Tja,

das wäre die Lösung, wenn die Property-liste immer NIL wäre.
Im Fall, dass diese aber einen Wert hat, sollte das Ergebnis aber eine Liste mit diesem Wert sein.

Code:

(setq property-liste (list :wertC "AAA"))
(setq listenvariable (list (getf property-liste :wertC)))
--> ("AAA")

Code:

(if (getf property-liste :wertC)
  (setq listenvariable (list (getf property-liste :wertC)))
  (setq listenvariable NIL)
)


Sieht gräßlich aus.
Da muss es doch etwas schöneres geben.

------------------
Gruß aus dem Salzkammergut

Thomas

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

Patrick Weber
Mitglied
Konstruktionstechniker, Admin


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

Beiträge: 659
Registriert: 20.11.2006

erstellt am: 09. Dez. 2011 10: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 holt 10 Unities + Antwort hilfreich

Code:

(setq property-liste (list :wertC "AAA"))
(setq listenvariable (getf property-liste :wertC))
--> "AAA"

Vielleicht könntest du erläutern, was du überhaupt machen willst. Andernfalls kann ich (können wir) nur orakeln.

------------------
Grüße aus Sachsen
pw

Karl Marx ist tot, Einstein ist tot, und mir ist auch schon ganz schlecht!

[Diese Nachricht wurde von Patrick Weber am 09. Dez. 2011 editiert.]

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

holt
Mitglied
Systembetreuer CAD


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

Beiträge: 714
Registriert: 07.08.2003

Lenovo ThinkStation P360
Core i7-12700@2.10 GHz, 32GB
NVIDIA RTX A2000 12 GB
Creo Elements/Direct Modeling 20.3
Creo Elements/Direct Drafting 20.3
Creo Elements/Direct ModelManager 20.3

erstellt am: 09. Dez. 2011 10:53    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

Tja, ich wollte es kurz machen, aber du hast recht, etwas mehr Information würde nicht schaden.

Ich habe einen Dialog mit einer Variablen, die mittels Subdialog befüllt werden soll.
Die zu befüllende Variable des Hauptdialogs muss dann entsprechend IKIT-Doku vom Typ Liste sein.
Der Subdialog erlaubt die Auswahl eines Koordinatensystems. (Diese Auswahl benötige ich in mehreren Dialogen, daher als Subdialog).
Die Eingaben des Haupt-Dialogs werden beim Beenden mittels Property-List und der Funktion (sd-attach-item-attribute) an ein Modell drangehängt, im Fall des Koordiantensystems in Form der SysID.

Beim erneuten Öffnen des Hauptdialogs werden die Attribute vom Modell ausgelesen und in die Dialogvariablen geschrieben.
Im Fall des Koordinatensystems muss die SysID wieder in ein sel_item umgewandelt und als Liste in der Dialogvariable gespeichert werden.

Genau hier tritt das Problem auf:
Wenn noch kein Koordinatensystem gewählt wurde, ist der Wert :KoSys in der Property-Liste NIL.

Code:

(setq listenvariable (list (sd-sysid-to-obj (getf property-liste :KoSys))))
--> (NIL)
Fehlermeldung: NIL is not a structure

Ich hoffe, dass ich mein Anliegen verständlich formiliert habe.    

------------------
Gruß aus dem Salzkammergut

Thomas

[Diese Nachricht wurde von holt am 09. Dez. 2011 editiert.]

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

Walter Geppert
Moderator
Frank und Frei




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

Beiträge: 2158
Registriert: 12.12.2000

erstellt am: 09. Dez. 2011 11: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 holt 10 Unities + Antwort hilfreich

Vorschlag:
Code:

(setq listenvariable (list (when (getf property-liste :KoSys) (sd-sysid-to-obj (getf property-liste :KoSys)))))

------------------
meine LISP-Makros sind auf osd.cad.de
Disclaimer
Grüße aus Wien

Walter
DC4 Technisches Büro GmbH

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

holt
Mitglied
Systembetreuer CAD


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

Beiträge: 714
Registriert: 07.08.2003

Lenovo ThinkStation P360
Core i7-12700@2.10 GHz, 32GB
NVIDIA RTX A2000 12 GB
Creo Elements/Direct Modeling 20.3
Creo Elements/Direct Drafting 20.3
Creo Elements/Direct ModelManager 20.3

erstellt am: 09. Dez. 2011 11:32    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 Walter,

dein Vorschlag sieht schon etwas schöner aus, allerdings darf die Funktion list erst nach dem when eingebaut werden, sonst kommt ja wieder (NIL) raus.

Aber wenn ich mir den ungekürzten Code ansehe:

Code:

(setq cs2_ref
  (when (getf (nth (- Num 1) pliste) :cs2_ref)
    (list (sd-sysid-to-obj (getf (nth (- Num 1) pliste) :cs2_ref)))
  )
)


wirds schon wieder etwas unübersichtlich.

vielleicht sollte ich es so probieren:

Code:

(let ((res (getf (nth (- Num 1) pliste) :cs2_ref)))
  (setq cs2_ref (when res (list (sd-sysid-to-obj res))))
)

Ganz klar ist mir trotzdem nicht, warum (list NIL) keine leere Liste, also NIL ergibt.
Macht das irgendwo Sinn?

------------------
Gruß aus dem Salzkammergut

Thomas

[Diese Nachricht wurde von holt am 09. Dez. 2011 editiert.]

[Diese Nachricht wurde von holt am 09. Dez. 2011 editiert.]

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

holt
Mitglied
Systembetreuer CAD


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

Beiträge: 714
Registriert: 07.08.2003

Lenovo ThinkStation P360
Core i7-12700@2.10 GHz, 32GB
NVIDIA RTX A2000 12 GB
Creo Elements/Direct Modeling 20.3
Creo Elements/Direct Drafting 20.3
Creo Elements/Direct ModelManager 20.3

erstellt am: 09. Dez. 2011 11:48    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

Ich kann mir die Antwort wohl selber geben:
Wenn man berücksichtigt, dass eine Liste meist mehrere Werte enthält, dann machts sehr wohl Sinn, dass eine Liste auch NIL-Werte enthalten kann.

(A NIL B NIL)
enthält 4 Werte, wenn jetzt die NIL-Werte einfach weggelassen würden, wären nur mehr 2 Werte enthalten, was sicher nicht korrekt ist.
Und auch, wenn lauter NIL-Werte enthalten wären, wärs IMHOIn my humble oppinion (Meiner Meinung nach) falsch, das Ergebnis als NIL zu betrachten.

Auf jeden Fall Danke für eure Denkanstöße!

------------------
Gruß aus dem Salzkammergut

Thomas

[Diese Nachricht wurde von holt am 09. Dez. 2011 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)2024 CAD.de | Impressum | Datenschutz