_

LISP zmiana zmiennej systemowej

Forum poświęcone flagowemu produktowi oraz aplikacjom pochodnym Autodesku. To jedyne forum mające w tytule nazwę programu, a to ze względu na jego olbrzymią popularność w Polsce. Można tutaj umieszczać również posty z ogólnie pojętej tematyki "Kreślarskie 2D".

LISP zmiana zmiennej systemowej

Postprzez wilda » cze 26, 2017 02:05

Chcę móc zmieniać zmienne systemowe USER*. Niestety to czego używam nie działa.
Kod: Zaznacz cały
(defun c:zm ( / zmienna )
   (if (= (GETVAR "UserR1") 0)
      ((setq zmienna (getreal "podaj wartość zmiennej"))
        (setvar "UserR1" zmienna)
      )
   )
)

Program zwraca błąd:
Kod: Zaznacz cały
Polecenie: ZM
; błąd: zły typ argumentu: stringp nil
; błąd: odrzucono ustawienia zmiennych programu AutoCAD: "UserR1" nil

Jak to powinno być poprawnie napisane?
wilda
 
Posty: 163
Dołączył(a): gru 18, 2007 21:41

Re: LISP zmiana zmiennej systemowej

Postprzez kojacek » cze 26, 2017 06:53

wilda napisał(a):Chcę móc zmieniać zmienne systemowe USER*. Niestety to czego używam nie działa.
Kod: Zaznacz cały
(defun c:zm ( / zmienna )
   (if (= (GETVAR "UserR1") 0)
      ((setq zmienna (getreal "podaj wartość zmiennej"))
        (setvar "UserR1" zmienna)
      )
   )
)

Program zwraca błąd:
Kod: Zaznacz cały
Polecenie: ZM
; błąd: zły typ argumentu: stringp nil
; błąd: odrzucono ustawienia zmiennych programu AutoCAD: "UserR1" nil

Jak to powinno być poprawnie napisane?



Dwa błędy: o jedną parę nawiasów za dużo, oraz próba przypisania wartości Userr1 gdy nie jest ustalona Zmienna (błędna konstrukcja if) zobacz to:
Kod: Zaznacz cały
(defun c:zm ( / zmienna )
  (if
    (zerop (GETVAR "UserR1"))
    (if
      (and
        (setq zmienna (getreal "\nPodaj wartość zmiennej: "))
        (numberp zmienna)
      )
      (setvar "UserR1" zmienna)
    )
  )
)
Avatar użytkownika
kojacek
 
Posty: 5235
Dołączył(a): paź 03, 2005 20:17

Re: LISP zmiana zmiennej systemowej

Postprzez wilda » cze 26, 2017 21:18

w końcu działa - dzięki!!!
Musiałem jeszcze tylko dopisać jedną linię kodu do pierwszego if co ma robić jeżeli USERR1 nie jest = 0
wilda
 
Posty: 163
Dołączył(a): gru 18, 2007 21:41


Powrót do AutoCAD

Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników