_

Lisp przypisany do przycisku z opcjami

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 przypisany do przycisku z opcjami

Postprzez wilda » sty 24, 2019 21:09

Mam napisanego lispa i jego polecenie przypisałem do kilku przycisków.
Przy każdym przycisku jest inna zmienna powodująca otwarcie innego pliku ini.
Wszystko działa jak należy jest tylko jedno ale...
Za każdym razem, żeby zadziałało muszę nacisnąć przycisk, nie mogę korzystać z automatycznego powtórzenia ostatniego polecenia bo wówczas nie ma danej o nazwie pliku ini.
Czy można w jakiś sposób zrobić żeby mieć jeden niezmienny plik lsp i mieć możliwość uruchomiania lispa z różnymi zmiennymi z nazwą pliku?
schemat lispa:
Kod: Zaznacz cały
(defun c:moje_polecenie ()
(setq PLIK_INI (getstring ""))
........
)

i makra (skrócone) przypisane do przycisku
Kod: Zaznacz cały
^C^C moje_polecenie mój_plik1.ini
^C^C moje_polecenie mój_plik2.ini
itd...
wilda
 
Posty: 234
Dołączył(a): gru 18, 2007 21:41

Re: Lisp przypisany do przycisku z opcjami

Postprzez andkal » sty 26, 2019 15:45

Nie wiem czy dobrze zrozumiałem problem ale jesli chodzi o to by powtórzenie polecenia nie pytało ponownie o ścieżkę to możnaby użyć zmiennej globalnej, a w lispie zapisać warunek żeby sciezke pliku ini pobierał z niej.
Jesli zmienna jest pusta to lisp pyta o sciezke, jesli jest niepusta (zapamietana z poprzedniego polecenia) to o nią nie pyta.
www.autolisps.blogspot.com - Lisp routines for Autocad and Autocad MEP
andkal
 
Posty: 25
Dołączył(a): paź 01, 2017 22:10
Lokalizacja: Kraków

Re: Lisp przypisany do przycisku z opcjami

Postprzez wilda » sty 26, 2019 19:58

Zmienna globalna byłaby pusta tylko do czasu użycia po raz pierwszy polecenia. Potem zapamiętana by się nie zmieniała, a to nie dobrze bo chcąc użyć tego samego polecenia ale z innym plikiem ini (inny przycisk) już by się nie dało.
Tak zmieniłem i działa tylko przy ponownym powtórzeniu jedno dodatkowe kliknięcie myszy dochodzi.
Czy to wszystko co można zrobić? (np wyeliminować to dodatkowe klikniecie)
Kod: Zaznacz cały
(defun c:moje_polecenie ()
(setq PLIK_INI (getstring "")) ;przy ponownym uruchomieniu trzeba wcisnąć enter (klik myszy)
(if
(= PLIK_INI "")
(setq PLIK_INI POWTÓRZ)
)
(setq POWTÓRZ PLIK_INI)
........
)
wilda
 
Posty: 234
Dołączył(a): gru 18, 2007 21:41

Re: Lisp przypisany do przycisku z opcjami

Postprzez kojacek » sty 27, 2019 09:23

Jeśli dobrze rozumiem, chodzi ci o coś takiego:

Tak może być zdefiniowane polecenie:


Kod: Zaznacz cały
(defun C:MOJE_POLECENIE (/)
  (cond
    ( (= *Plk_ini* "a.ini")(alert "A"))
    ( (= *Plk_ini* "b.ini")(alert "B"))
    ( (= *Plk_ini* "c.ini")(alert "C"))
    (t (alert "nic")
  )
)



a tak wygląda przypisanie wywołań do przycisków:

Kod: Zaznacz cały
^C^C (setq *Plk_ini* "a.ini")(C:MOJE_POLECENIE)
^C^C (setq *Plk_ini* "b.ini")(C:MOJE_POLECENIE)
^C^C (setq *Plk_ini* "c.ini")(C:MOJE_POLECENIE)
^C^C (setq *Plk_ini* nil)(C:MOJE_POLECENIE)
^C^C (setq *Plk_ini* "")(C:MOJE_POLECENIE)



Mechanizm jest taki:
- w poleceniu zdefiniowane są różne akcje w zależności o nazwy pliku lub jego braku (może być taka sama dla każdego pliku)
- cała zabawa polega na zdefiniowaniu wywołania polecenia w przyciskach - tutaj w pierwszej kolejności nadpisuje się zmienną globalną, a w drugiej wywołuje polecenie. A ono działa w zależności od zmiennej. Powtórzenie polecenia (z Entera, albo z linii poleceń), uruchamia je z ostatnim ustawieniem zmiennej.
Avatar użytkownika
kojacek
 
Posty: 5487
Dołączył(a): paź 03, 2005 20:17

Re: Lisp przypisany do przycisku z opcjami

Postprzez wilda » sty 28, 2019 10:54

Miałem nadzieję, że to się tak da zrobić, że tylko zmieniając wpisy w makro (bez modyfikacji lispa) do przycisku będzie można tworzyć dodatkowe przyciski z innym plikiem ini.
W sumie i takie rozwiązanie jest do zaakceptowania bo prawdę powiedziawszy te różne przyciski jak się zrobi to już na razie więcej nie widać potrzeby następnych.
Dzięki.
wilda
 
Posty: 234
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