| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für PTC CREO |
Autor
|
Thema: LISP-Fehler: Cannot expand the SETF form (POSITION-IF #'NUMBERP ... (1354 mal gelesen)
|
holt Mitglied Systembetreuer CAD
Beiträge: 713 Registriert: 07.08.2003 Corei7 3770K, Win7-64, 16GB PNY Quadro 2000K CoCreate Modeling 18.10 CoCreate Drafting 18.10 CoCreate ModelManager 18.10
|
erstellt am: 01. Dez. 2008 11:14 <-- editieren / zitieren --> Unities abgeben:
Hallo, ich bekomme beim Laden eines Lisp-Files immer folgende Fehlermeldung:
Code: LISP-Fehler: Cannot expand the SETF form (POSITION-IF #'NUMBERP (SD-INQ-OBJ-BASENAME VIEW) :KEY ...).
Was bedeutet die Meldung? Kann es sein, dass die Funktion position-if im IKIT nicht implementiert ist?
------------------ Gruß aus dem Salzkammergut Thomas Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Walter Geppert Moderator Frank und Frei
Beiträge: 2143 Registriert: 12.12.2000 Konstruktion von Sondermaschinen, Montageautomaten, Meß- und Prüfeinrichtungen, Vorrichtungen und Produktentwicklung mit Creo Elements/Direct Modeling 20.4, AdvancedDesign, Surfacing, Simulate, SolidPower, ModelManager auf HP ZBook 17 G4, Windows 10 Pro 64
|
erstellt am: 01. Dez. 2008 11:18 <-- editieren / zitieren --> Unities abgeben: Nur für holt
|
clausb Ehrenmitglied V.I.P. h.c.
Beiträge: 2914 Registriert: 20.12.2000 Ich schreibe das hier in meiner Freizeit und spreche weder für meinen Arbeitgeber noch für andere Firmen. Mehr Unsinn von mir unter clausbrod.de.
|
erstellt am: 01. Dez. 2008 11:26 <-- editieren / zitieren --> Unities abgeben: Nur für holt
|
holt Mitglied Systembetreuer CAD
Beiträge: 713 Registriert: 07.08.2003 Corei7 3770K, Win7-64, 16GB PNY Quadro 2000K CoCreate Modeling 18.10 CoCreate Drafting 18.10 CoCreate ModelManager 18.10
|
erstellt am: 01. Dez. 2008 11:37 <-- editieren / zitieren --> Unities abgeben:
Ein Fehler? Bei mir doch nicht! Im Ernst: Hier der Code um den es geht:
Code:
(decf (position-if #'numberp "Test123" :key #'(lambda (zchn) (oli:sd-read-from-string (format nil "~a" zchn)))))
Ich möchte damit die Position der ersten Ziffer ermitteln und um 1 erniedrigen.Edit: Das war zu wenig Code, decf verursacht offensichtlich das Problem. ------------------ Gruß aus dem Salzkammergut Thomas [Diese Nachricht wurde von holt am 01. Dez. 2008 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
holt Mitglied Systembetreuer CAD
Beiträge: 713 Registriert: 07.08.2003 Corei7 3770K, Win7-64, 16GB PNY Quadro 2000K CoCreate Modeling 18.10 CoCreate Drafting 18.10 CoCreate ModelManager 18.10
|
erstellt am: 01. Dez. 2008 11:47 <-- editieren / zitieren --> Unities abgeben:
|
clausb Ehrenmitglied V.I.P. h.c.
Beiträge: 2914 Registriert: 20.12.2000 Ich schreibe das hier in meiner Freizeit und spreche weder für meinen Arbeitgeber noch für andere Firmen. Mehr Unsinn von mir unter clausbrod.de.
|
erstellt am: 01. Dez. 2008 14:54 <-- editieren / zitieren --> Unities abgeben: Nur für holt
Zitat: Original erstellt von holt: Das kann gar nicht funktionieren, da decf den übergebenen Wert verändert und nicht den Rückgabewert.
Weil nämlich decf (wie incf) ein Lisp-Makro ist. Aus der Common-Lisp-Dokumentation: Zitat:
decf place [delta] The delta is ... subtracted from the number in place and the result is stored in place.
Der erste Parameter für decf muss also einen Platz bezeichnen, an dem das berechnete Ergebnis von decf wieder abgespeichert werden kann. In Deinem Fall sinnvoller: 1-. ------------------ CoCreate Modeling FAQ: http://www.clausbrod.de/CoCreateModeling/
[Diese Nachricht wurde von clausb am 01. Dez. 2008 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
holt Mitglied Systembetreuer CAD
Beiträge: 713 Registriert: 07.08.2003 Corei7 3770K, Win7-64, 16GB PNY Quadro 2000K CoCreate Modeling 18.10 CoCreate Drafting 18.10 CoCreate ModelManager 18.10
|
erstellt am: 01. Dez. 2008 15:15 <-- editieren / zitieren --> Unities abgeben:
|
clausb Ehrenmitglied V.I.P. h.c.
Beiträge: 2914 Registriert: 20.12.2000 Ich schreibe das hier in meiner Freizeit und spreche weder für meinen Arbeitgeber noch für andere Firmen. Mehr Unsinn von mir unter clausbrod.de.
|
erstellt am: 01. Dez. 2008 15:53 <-- editieren / zitieren --> Unities abgeben: Nur für holt
|
der_Wolfgang Ehrenmitglied V.I.P. h.c. Tastenhauer
Beiträge: 2017 Registriert: 3.20. ● PE60+80@home ● W10 Pro Build19044.2364 ● Drafting V17~V20.5.1 ● Modeling V17~V20.5.1
|
erstellt am: 01. Dez. 2008 19:32 <-- editieren / zitieren --> Unities abgeben: Nur für holt
Zitat: Original erstellt von holt: Das kann gar nicht funktionieren, da den übergebenen Wert verändert
Code: (trace decf position-if numberp) ;; verdaechtiger code (untrace decf position-if numberp)
liefert häufig erkenntniss WO es rumpeltt . Also ein gezieltes, dann aber intensives trace'n der verwendeten Funktionen..... wobei man LISP Macros in CoCreate Modeling nicht tracen kann. Aber das sieht man (wie im obigen Fall) dann auch sehr schnell im Konsolenfenster. Und 'weh' tut der nicht funktionierende trace auch nicht (Ausserdem baut man das ja auch nur vorübergehend ein). ------------------ ● Seamonkey Firefox Thunderbird ● OSD Hilfeseite (de) / help page (en) ● NotePad++ ● [Diese Nachricht wurde von der_Wolfgang am 01. Dez. 2008 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Technischer Systemplaner - CAD / TGA / Bauzeichnung (m/w/d) | Wir sind mit über 500 Mitarbeiterinnen und Mitarbeitern der größte herstellerunabhängige Kälteanlagenbauer in Deutschland. Mit fundierten Erfahrungen bei Planung, Lieferung, Montage und Service von kälte- und klimatechnischen Systemen liefern wir Kälte nach Maß und Klima nach Bedarf. Von der Einzelanlage bis zum hochkomplexen Anlagenkonzept legen wir besonderen Wert auf energieoptimierte und umweltfreundliche Konzepte.... | Anzeige ansehen | Technischer Zeichner, Bauzeichner |
|
clausb Ehrenmitglied V.I.P. h.c.
Beiträge: 2914 Registriert: 20.12.2000 Ich schreibe das hier in meiner Freizeit und spreche weder für meinen Arbeitgeber noch für andere Firmen. Mehr Unsinn von mir unter clausbrod.de.
|
erstellt am: 01. Dez. 2008 21:32 <-- editieren / zitieren --> Unities abgeben: Nur für holt
Bzzzt. decf kann man zumindest in der Lisp-Implementierung von CoCreate Modeling nicht mit (trace) verfolgen. Aber zum Glück reicht in diesem Fall zur Klärung ja auch ein flüchtiger Blick in ein beliebiges Common-Lisp-Buch oder in die CL-Spezifikation. Claus ------------------ CoCreate Modeling FAQ: http://www.clausbrod.de/CoCreateModeling/
[Diese Nachricht wurde von clausb am 02. Dez. 2008 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |