Hallo Waldemar,
wenn ich mir den Code anschaue, vermute ich mal, dass du autodidaktisch dabei bist Lisp zu erlernen.
Es ist Dir vielleicht selbst schon aufgefallen, dass du andauernd (mit kleinen Veränderungen) das selbe schreibst.
Ich habe Deine Funktion mal etwas umgestellt, sodass du nur eine SUB für Deine Abfragen benötigst. Diese dann in den unterschiedlichsten Varianten aufrufst.
Code:
(Defun RealAbfrage (WasText vg darf0 darfNeg / initgetwert erg)
(setq initgetwert (if vg 0 1)
initgetwert (if (not darf0)(+ initgetwert 2)initgetwert)
initgetwert (if (not darfNeg)(+ initgetwert 4)initgetwert)
)
(initget initgetwert)
(setq erg (Getreal (Strcat "\n" WasText (if vg (strcat " <"(rtos vg 2 2) ">") "") ": ")))
(if (and (not erg)
vg)
vg
erg
)
)
;;;Funktionsaufruf
;(RealAbfrage WasText vg darf0 darfNeg)
;Typen
;(RealAbfrage STRING REAL/nil T/nil T/nil
;WasText(STRING)-> Text, der in der Eingabeaufforderung erscheint
;vg(REAL/nil)-> REAL-Erscheint dann als Vorgabe in spitzen Klammern, Keine Benutzereingabe erforderlich(kann mit Enter einfach bestätigt werden
; nil-keine Vorgabe; Benutzereingabe erforderlich
;darf0(T/nil)-> T-Es dürfen 0-Werte eingegeben werden
; nil-Es dürfen KEINE 0-Werte eingegeben werden
;darfNeg(T/nil)->T-Es dürfen negative Werte eingegeben werden
; nil-Es dürfen KEINE negativen Werte eingegeben werden
;;;Deine Abfragen
(setq KL1 (RealAbfrage "Kanallänge" KL1 nil nil))
(setq KB1 (RealAbfrage "Kanalbreite" KB1 nil nil))
(setq DW (RealAbfrage "Drehwinkel" DW T T))
;;;
;;Beispielabfragen
(setq tmp(RealAbfrage "Test 01" nil T T))
(setq tmp(RealAbfrage "Test 02" nil nil T))
(setq tmp(RealAbfrage "Test 03" nil nil nil))
(setq tmp(RealAbfrage "Test 04" nil T nil))
(setq tmp(RealAbfrage "Test 05" nil T nil))
(setq tmp(RealAbfrage "Test 06" nil T T))
(setq tmp(RealAbfrage "Test 01a" 1.0 T T))
(setq tmp(RealAbfrage "Test 02b" 1.0 nil T))
(setq tmp(RealAbfrage "Test 03c" 1.0 nil nil))
(setq tmp(RealAbfrage "Test 04d" 1.0 T nil))
(setq tmp(RealAbfrage "Test 05e" 1.0 T nil))
(setq tmp(RealAbfrage "Test 06f" 1.0 T T))
Außerdem möchte ich dich darauf aufmerksam machen, dass du die Variablen zurück setzen /lokal deklarieren solltest. Oftmals ist das für 'unlogisches' Programmverhalten die Ursache.
Bei Fragen ...
Grüße Holger
------------------
Holger Brischke
CADlon - Lisp over night!
4 Neue Tool's im FreeDownload(gesamt 33)!?
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP