| |
| 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
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 / zitieren --> Unities abgeben:
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
Beiträge: 659 Registriert: 20.11.2006
|
erstellt am: 09. Dez. 2011 09:58 <-- editieren / zitieren --> Unities abgeben: Nur für holt
|
holt Mitglied Systembetreuer CAD
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 / zitieren --> Unities abgeben:
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
Beiträge: 659 Registriert: 20.11.2006
|
erstellt am: 09. Dez. 2011 10:20 <-- editieren / zitieren --> Unities abgeben: Nur für holt
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
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 / zitieren --> Unities abgeben:
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
Beiträge: 2158 Registriert: 12.12.2000
|
erstellt am: 09. Dez. 2011 11:16 <-- editieren / zitieren --> Unities abgeben: Nur für holt
|
holt Mitglied Systembetreuer CAD
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 / zitieren --> Unities abgeben:
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
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 / zitieren --> Unities abgeben:
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 IMHO 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 |