(vl-load-com)


(defun XGetReal (tresc domyslny / Wynik Liczba)
;----------------------------------------------------------
;funkcja prosi użytkownika o podanie liczby rzeczywistej
;Argumenty: komunikat, zachętę, który sie wyświetli w linii poleceń w chwili uruchomienia funkcji
;Wynik: wartość liczbowa wpisana przez Użytkownika
; wartość liczbowa domyślna jeśli Użytkownik na klawiaturze wciśnie [ENTER] [SPACJA]
; nil - jeśli Użytkownik na klawiaturze wciśnie [ESC]
;----------------------------------------------------------
(setq Liczba(vl-catch-all-apply 'getreal (list tresc )))
(if (vl-catch-all-error-p Liczba)
(progn
(prompt (vl-catch-all-error-message Liczba))
(setq Wynik nil )
)
(progn
(if (null Liczba)
(setq Wynik domyslny )
(setq Wynik Liczba)
)
)
)
Wynik
)

(defun XGetdist (tresc domyslny / Wynik Odl )
;----------------------------------------------------------
;funkcja prosi użytkownika o podanie odległości (może byc wpisanie wartości na klawiaturze lub wskazanie pary punktów
;Argumenty: komunikat, zachętę, który sie wyświetli w linii poleceń w chwili uruchomienia funkcji
;Wynik: wartość liczbowa jeśli Użytkownik wpisze wartość z klawiatury
; wartość liczbowa - odległość pomiędzy parą punktów jeśli użytkownik wskaże parę punktów
; wartość liczbowa domyślna jeśli Użytkownik na klawiaturze wciśnie [ENTER] [SPACJA]
; nil - jeśli Użytkownik na klawiaturze wciśnie [ESC]
;----------------------------------------------------------
(setq Odl(vl-catch-all-apply 'getdist (list tresc ))) ;wykonanie funkcji getdist proszącej o wskazanie odległości (z klawiatury lub przez podanie pary punktów) zwraca odległość lub obiekt błędu
(if (vl-catch-all-error-p Odl) ; sprawdzenie czy zwrócony został obiekt błędu
(progn ; wystąpił błąd
(prompt (vl-catch-all-error-message Odl)) ;wyświetla w pasku poleceń komumikat błędu
(setq Wynik nil )
)
(progn ; Użytkownik określił odległość poprawnie lub [ENTER]/[SPACE]
(if (null Odl)
(setq Wynik domyslny )
(setq Wynik Odl)
)
)
)
Wynik
)

(defun C:Predkosc ( / )
;----------------------------------------------------------
; funkcja przelicza prędkość obrotową po okręgu o zadanym promieniu na prędkość liniową po jego obwodzie
; Argumenty:
; Wynik:
;----------------------------------------------------------

(setq n (XGetReal "Podaj prędkość obrotową w [obr/min]" nil) )
(if n (progn
(setq Fi (XGetdist "Podaj średnicę koła w [m]" nil))
(if Fi (progn
(setq v (* 2 pi n (/ Fi 2.0)))
(print (strcat "Prędkość obrotowa {n} = " (rtos n 2 4) "[obr/min]"))
(print (strcat "średnica koła {Fi} = " (rtos Fi 2 4) "[m]"))
(print (strcat "Prędkość liniowa {v} = " (rtos v 2 4) "[m/min]" ))
)); endIf podano średnicę koła
)); endif podanie predkości
)

Wykonanie w ZWCAD 2015+LISP Predkosc 2015

Wykonanie w ZWCAD ClassicLISP Predkosc Classic