Hallo zusammen,
ich habe ein Problem mit der SDS-Schnittstelle und mapcar.
Folgendes kleines Beispielprogramm:
(defun C:&&Test ( / l-1 l-2)
(princ "\n Input: ")
(setq l-1 '((0.0 0.0 0.0) (1.0 1.0 1.0)))
(princ l-1) (princ "\n ")
(setq l-2 (#TEST l-1))
(setq l-2 (car l-2))
(princ "\n Output: ")
(princ l-2)
(princ "\n Das erste Element: ")
(princ (mapcar 'car l-2))
)
Hier die dazugehörige Bildschirmausgabe:
Loading D:\Icad\konert.lsp
: C:&&TEST
: &&TEST
Input: ((0.000000 0.000000 0.000000) (1.00000 1.00000 1.00000))
Output: ((0.000000 0.000000 0.000000) (1.00000 1.00000 1.00000))
Das erste Element:
An error has occurred: bad argument type
#TEST ist eine C++-Routine, die nicht anderes macht als die Liste über die Schnittstelle zu schicken.
Die Liste wird eingelesen und sofort wieder zurückgegeben.
Wenn ich das ganze per Hand eingebe (im Befehlsfenster) und nicht über die C++ Schnittstelle gehe, funktioniert es ohne Probleme:
(setq lll '((0.0 0.0 0.0) (1.0 1.0 1.0)))
((0.000000 0.000000 0.000000) (1.00000 1.00000 1.00000))
(mapcar 'car lll)
(0.000000 1.00000)
Wer Interesse hat, dem kann ich das C++ Projekt zuschicken.
Gruß Stephan
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP