|
AutoCAD... AutoLISP... VisualLISP... |
|
[25] MsgBox a alert |
Przekazywanie jasnych i pełnych informacji użytkownikowi, jest podstawą każdego (dobrego) programu. Wysyłanie komunikatów o
zaistniałych błędach, zagrożeniach, czy pytań dotyczących dalszego wykonywania programu, jest niezwykle ważne.
Niestety AutoLISP nie posiada takiego narzędzia. Funkcja alert może nadawać się tylko do niektórych zastosowań
(komunikaty i informacje wymagające tylko akceptacji). Do zastosowania interfejsu komunikacji zgodnych z Windows
możesz wykorzystać funkcje zdefiniowane aplikacjach arx (np. dos_lib lub acet_util.arx). Jeżeli jednak nie masz tych
plików (lub nie chcesz z nich korzystać), możesz skorzystać ze sposobu który tutaj przedstawiam. Działa w wersji
AutoCAD 2000 i wyższych. Zasada działania jest niezwykle prosta. Polega na wywołaniu funkcji VB o nazwie MsgBox
przez program VisualLISP. Aby kontrolować przez LISP wartości zwróconej przez MsgBox, VB zapisuje ją do zmiennej
systemowej USERI1. Lisp odczytuje tę wartość i zwraca na końcu funkcji. Ponieważ program korzysta z metod ActiveX,
moduł (vl-load-com) musi być już załadowany. Funkcja wygląda tak:
|
;;; =================================================================;;; ;;; Wyświetla okna informacyjne i ostrzeżeń ;;; ;;; 2001(2009) by kojacek ;;; ;;; =================================================================;;; ;;; Argumenty: ;;; ;;; Message - treść komunikatu ;;; ;;; Buttons - typu i ilości przycisków oraz ikony ;;; ;;; Title - Tytuł okna ;;; ;;; =================================================================;;; (defun jk:VBA_Msg (Msg Btn Title / Old_User Res) (setq Old_User (getvar "USERI1")) (vla-eval (vlax-get-acad-object) (strcat "AutoCAD.AcadApplication.ActiveDocument.SetVariable \"USERI1\", MsgBox (\"" Msg "\"," (itoa Btn) ",\"" Title "\")" ) ) (setq Res (getvar "USERI1")) (setvar "USERI1" Old_User) Res ) |
| Poniżej przykłady wywołań funkcji: |
|
|
Wartości argumentu Buttons (dla różnych kombinacji przycisków, ikon i przycisków domyślnych mogą być sumowane): VbCritical - 16 - Wyświetl ikonę Komunikat krytyczny. VbQuestion - 32 - Wyświetl ikonę Pytanie ostrzegawcze. VbExclamation - 48 - Wyświetl ikonę Komunikat ostrzegawczy. VbInformation - 64 - Wyświetl ikonę Komunikat informacyjny. VbDefaultButton1 - 0 - Domyślnym przyciskiem jest przycisk pierwszy. VbDefaultButton2 - 256 - Domyślnym przyciskiem jest przycisk drugi. VbDefaultButton3 - 512 - Domyślnym przyciskiem jest przycisk trzeci. VbDefaultButton4 - 768 - Domyślnym przyciskiem jest przycisk czwarty Zwracane wartości przez funkcję: vbOK - 1 - OK vbCancel - 2 - Anuluj vbAbort - 3 - Przerwij vbRetry - 4 - Ponów vbIgnore - 5 - Ignoruj vbYes - 6 - Tak vbNo - 7 - Nie Oto niektóre przykłady: |
|
|
|
|
|