Zitat:
Original erstellt von Greskamp:
ich kanns mir mal wieder nicht erklären.
Ich habe in einer Datei zig defun die alle geladen werden, jedoch dieses nicht.Wenn ich den defun Code in die Befehlszeile kopiere, klappt es. Sonst sagt er kann "mitte1_2d_def" nicht finden
Oder liegt es daran das ich am Ende die Variable "mitte1_2d" noch mal ausgebe?
Code:
..... )
mitte1_2d
) ;; end defun
Was heisst denn hier "ausgeben" - Du schreibst da nen Variablen Name hin.
Was aber viel "schlimmer" ist: wenn es keine Workplane gibt, gibt es beim ersten Aufruf der Funktion einen LISP fehler (und wie wird der wohl heissen??)
Du benutzt nemmlich kein (let (...))! Damit ist die Variable mitte1_2d gar nicht definiert (es sei denn Du hast die Funktion schon vorher einmal mit vorhanderen CurrWP aufgerufen).
Zeige-Finger-schwenk!!!! Variablen deklariert/definiert mann!!!! (und Frau auch!)
Guck mal so:
Code:
(in-package :greskamp)
(use-package :OLI)(defun mitte1_2d_def (mitte1)
(let (mitte1_2d)
(If (sd-inq-curr-wp)
(setq mitte1_2d (sd-gpnt3d-to-2d (sd-vec-xform mitte1 :source-space :global :Dest-space (sd-inq-curr-wp))))
(display "keine aktive Arbeitsebene vorhanden")
)
mitte1_2d ;; return value
) ;; end let
) ;; end defun
Das ist (war) einfach unsauber programmiert (JEDE variable ist zu definieren, und damit Pasta!) und ich finds lustig das der Fehler auf so grauslige Art zurueck schlaegt.
Der NAME der Funktion die, du da definiert hast, laesst mich allerdings unterm Strich schlimmeres vermuten.
JEDE Variable die du/ihr mit einem setf/setq setzen wollt muss
- in einem let definiert sein, oder
- ein Funktions Uebergabe Parameter sein oder
- via defvar definiert werden oder
- via defparameter definiert werden oder
- via multiple-value-bound... oder
Aber ein (setf ... ) ohne was 'davor' ist immer ein grosses Risiko. Andere Programmiersprachen schimpfen da ganz heftig. LISP leider nicht. Zumindest nicht bei interpretiertem Lisp code (compile-file zeigt solche eklatanten Fehler an).
------------------
● Firefox ESR ● Java Forum Stuttgart JUGS ● OSD Hilfeseite (de) / help page (en) ● NotePad++ ● BuFDi ●
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP