Previous Next Play Pause
1 2 3 4 5 6

Aktualności, wydarzenia, nowości, promocje

Wydarzenia

03 październik 2025

Masz wiedzę – czas na praktykę! Ukończyłeś szkolenie z obsługi ZWCAD? Teraz możesz zrobić kolejny krok i przećwiczyć zdobytą wiedzę w praktyce podczas specjalnych warsztatów z trenerem.

Promocje

02 październik 2025

Miesiąc kursów w prezencie Jesień i długie wieczory sprzyjają nauce we własnym tempie. Dlatego teraz do każdej nowej, bezterminowej licencji ZWCAD dokładamy miesiąc dostępu do wszystkich kursów na...

Wydarzenia

23 wrzesień 2025

Zapraszamy do udziału w warsztatach branżowych online Podczas tego spotkania uczestnicy poznają możliwości dwóch specjalistycznych narzędzi – ZWCADa oraz ZWGeo, które wspierają proces...

Wydarzenia

12 wrzesień 2025

Kolejne wydarzenie na żywo już wkrótce Już 4 listopada 2025 r. zapraszamy do Wrocławia na kolejną edycję wydarzenia „Nowy wymiar projektowania – ZWCAD 2026 Live”, które odbędzie się w DoubleTree by...

zapytanie ofertowe cadZapytanie ofertowe

Otrzymaj ofertę dopasowaną do swoich potrzeb. Chętnie doradzimy w wyborze oprogramowania i rozwiejemy wątpliwości. 

Prosimy o pozostawienie danych kontaktowych a nasi eksperci postarają się spełnić Państwa oczekiwania.

Referencje zwcadWybrane referencje

ZWCAD w firmie, która produkuje szkło dla budownictwa - Q4GLASS, ZWCAD i ZWTraffic przy projektach oraganizacji ruchu drogowego, ZWCAD wykorzystywany przy projektach sieci wodociągowych oraz przy konstrukcji hal przemysłowych, magazynowych i handlowych.

Programy CAD na YouTubeKanał YouTube

Zachęcamy do zapoznania się z zawartością naszego kanału na YouTube. Cyklicznie publikujemy filmy pokazujące funkcjonalność naszych programów CAD. Filmy poukładane są tematycznie, na przykład kurs ZWCAD 2024 - zobacz jak łatwo rozpocząć rysowanie.

Przykład prazy z oknami dialogowymi. W LISP okna dialogowe można tworzyć korzystając z mechanizmów DCL. Do wyświetlenie okna konieczne jest utworzenie dwóch plików. pierwszy z rozszerzeniem DCL zawiera strukturę okna. W drugim, czyli pliku LSP zdefiniowana jest cała obsługa okna.

Przykład, którym się posłużę zawierał będzie przycisk, pozwalający na wskazanie pliku tekstowego, listę, do której zapisywany będzie wskazany plik wiersz po wierszu. Drugi przycisk wstawi do rysunku treść zaznaczonego wiersza. Ostatni przycisk zamyka okno.

 

Okna dialogowe

 

Polecenie do uruchomienia skryptu LISP: testDCL

 

Kod źródłowy z opisem

  

;;; Okna dialogowe
;;; zwcad.pl
;;; Polecenie do uruchomienia skryptu LISP: testDCL
;;; Opis: https://www.zwcad.pl/materialy-edukacyjne/kurs-lisp/przyklady-lisp/192-okna-dialogowe-dcl-cz-1.html
(vl-load-com)
(setq *ZWCAD* (vlax-get-acad-object))
(setq *Rysunek* (vla-get-activedocument *ZWCAD* ))
(setq *Model* (vla-get-Modelspace *Rysunek* ))
(defun c:testDCL( / sciezkaprogramu DCLPath OutVal dcl_id Loop )
(setq sciezkaprogramu "c:\\" ) ; należy tu wpisać śceżkę dostępu do katalogu, gdzie znajduje się właściwy plik z definicją okna czyli plik DCL
; Jeśli ścieżka ta pozostanie pusta, plik DCL musi znajdować się w katalogu widocznym przez ZWCAD. w innym przypadku praca z knem nie będzie możliwa
(setq DCLPath (strcat sciezkaprogramu "test.DCL" ))
(setq dcl_id(load_dialog DCLPath )) ; wczytanie pliku definicji okien dialogowych. Jeden plik może definiować wiele okien
(if dcl_id (progn
(setq OutVal 1 )
(while (> OutVal 0)
(new_dialog "PrzykladoweOkno" dcl_id) ; Utworzenie określonego okna, okno nie jest jeszcze widoczne na ekranie
(action_tile "zapisz" "(setq wybrany(get_tile \"wartosc\" )) (done_dialog 3) ") ;przypisanie działania do przycisku "zapisz" (done_dialog )zamyka okno, parametr funkcji jest zwracany przez funkcję start_dialog
(action_tile "koniec" "(done_dialog 0)") ;przypisanie działania do przycisku "koniec"
(if trescpliku (progn;
(start_list "wartosc" ) ; wypełnienie listy musi być poprzedzone otwarciem listy do zapisu
(foreach  % trescpliku (add_list % ) ) ; dodanie wiersza do listy
(end_list) ; zamknięcie listy 
))
(setq OutVal(start_dialog)) ; wyświetlenie okna. Zwracana wartość zależna jest od parametru done_dialog
(cond 
((= OutVal 3) (zapisz wybrany))
)
)
(unload_dialog dcl_id) ; rozładowanie pliku z definicjami okien
))
)
(defun XGetpoint (tresc P0 domyslny /  Px  Wynik )
;----------------------------------------------------------
;Funkcja prosi Użytkownika o podanie punktu, jeśli Użytkownik wciśnie na klawiaturze spację lub enter, funkcja zwróci współrzędne punku domyślnego przekazane jako argument funkcji
;Argumenty: komunikat, zachętę, który sie wyświetli w  linii poleceń w chwili uruchomienia funkcji
;Wynik: współrzędne punku - jeśli Użytkownik je poda
; współrzędne punku domyślnego - jeśli Użytkownik na klawiaturze wciśnie [ENTER] [SPACJA]
; nil - jeśli Użytkownik na klawiaturze wciśnie [ESC]
;----------------------------------------------------------
(if (not(null P0))
(setq Px(vl-catch-all-apply 'getpoint (list P0 tresc ))) ;wykonanie funkcji getpoint proszącej o wskazanie punktu) zwraca współrzędne punktu lub obiekt błędu
(setq Px(vl-catch-all-apply 'getpoint (list  tresc )))
)
(if (vl-catch-all-error-p Px) ; sprawdzenie czy zwrócony został obiekt błędu
(progn ; wystąpił błąd
(prompt (vl-catch-all-error-message Px)) ;wyświetla w pasku poleceń komumikat błędu
(setq Wynik nil )
)
(progn ; Użytkownik wskazał punkt lub [ENTER]/[SPACE]
  (if (null Px) 
(setq Wynik domyslny )
(setq Wynik Px)
  )
)
  )
  Wynik
)
(defun wczytaj_fun ( / wskazanyplik File_Exist  )
(setq wskazanyplik(getfiled "Wskaz plik do wczytania" "" "txt" 2))
(setq File_Exist (findfile wskazanyplik))
(if File_Exist (progn
(setq trescpliku (wczytajPlik wskazanyplik))
(start_list "wartosc" )
(foreach  % trescpliku
(add_list % )
)
(end_list)
))
)
(defun zapisz (wybrany / SetPt wybrany_txt )
(print wybrany )
(setq wybrany_txt (nth (atoi wybrany) trescpliku))
(setq SetPt (XGetpoint "Wskaż punkt wstawienia" nil nil  ))  ; (setq SetPt (list 0 0 0 ) )
(if SetPt (progn
(vlax-invoke-method *Model* 'AddMText (vlax-3d-point SetPt ) 1 wybrany_txt )
))
(command "_regen")
)
(defun wczytajPlik (sciezka / filedesc linia OutList )
(setq filedesc (open sciezka "r"))
(setq linia(read-line filedesc ))
(while linia
(setq OutList (append OutList (list linia)))
(setq linia(read-line filedesc))
)
(close filedesc )
OutList 
)

;-----------------------------------------------------------------------

plik DCL


PrzykladoweOkno : dialog { 
label = "Edytor tekstu";
width = 50;
height = 20;
:list_box {key="wartosc";
width=36; 
height=14;
multiple_select = false;
allow_accept = false;
}
:button{
key="wczytaj";
label = "wczytaj";
action = "(wczytaj_fun)";
}
:button{
key="zapisz";
label = "zapisz";
}
:button{
key="koniec";
label = "Zakończ";
is_cancel = true;
}
 }

 

Wykonanie w ZWCAD 2023

okna dialogowe