Ten skrypt pozwala na wstawienie do rysunku aktualnej godziny wraz z datą. 


Wstawienie daty i godziny

 

Polecenie do uruchomienia skryptu LISP: WstawCzas

 

Kod źródłowy z opisem

 

;;; Wstawienie do rysubku daty i godziny
;;; zwcad.pl
;;; Polecenie do uruchomienia skryptu LISP: WstawCzas
;;; Opis: https://www.zwcad.pl/materialy-edukacyjne/kurs-lisp/przyklady-lisp/122-wstawienie-do-rysunku-daty-i-godziny.html
(vl-load-com)
(setq *ZWCAD* (vlax-get-acad-object))
(setq *Rysunek* (vla-get-activedocument *ZWCAD* ))
(setq *Model* (vla-get-Modelspace *Rysunek* ))
(defun d2r (degs /)
;----------------------------------------------------------
;funkcja zamienia wartość kąta zapisaną w stopniach na jej odpowiednik w radianach
;Argumenty: liczba, wartość kąta w stopniach
;Wynik: liczba, wartość kąta w radianach
;----------------------------------------------------------
(/(* pi degs)180.0)
)
(defun l2v (Lpts / )
;----------------------------------------------------------
; funkcja zamienia listę współrzędnych na obiekt typu variant
; Argumenty : lista zawiearająca współrzędne
; Wynik : variant
;----------------------------------------------------------
(vlax-make-variant (vlax-safearray-fill (vlax-make-safearray vlax-vbdouble (cons 0 (1- (length Lpts)))) Lpts ))
)
(defun C:WstawCzas ( / time rok miesiac dzien godzina minuta sekunda tresc wst_pt TextSize napis_obj napis_ent obwod
Pts OdsOdl OdsPts frame KatObr )
;----------------------------------------------------------
; funkcja wstawia datę i godzinę we wskazanym przez Użytkownika punkcie
; Argumenty: brak
; Wynik: brak
;----------------------------------------------------------
(setq time (rtos (getvar "CDATE") 2 8)) ; pobranie daty i godziny systemowej
(setq rok (substr time 1 4) ; rozbicie tekstu daty na poszczególne składowe
miesiac(substr time 5 2)
dzien (substr time 7 2)
godzina (substr time 10 2)
minuta (substr time 12 2)
sekunda (substr time 14 2)
)
(setq tresc (strcat rok "." miesiac "." dzien " " godzina ":" minuta ":" sekunda)) ; formatowanie napisu
(setq wst_pt (getpoint "Gdzie wstawić?") )
(setq TextSize (getvar "TEXTSIZE" ))
(setq napis_obj (vlax-invoke-method *Model* 'AddText tresc (vlax-3d-point wst_pt ) TextSize ) ) ; utworzenie tekstu
(setq napis_ent(vlax-vla-object->ename napis_obj)) ; zamiana obiektu na ename by móc odczytać jego obwiednię
(setq obwod(textbox (entget napis_ent))) ; odczytanie obwiedni tekstu
(setq Pts (list (caar obwod) (cadar obwod )
(caadr obwod) (cadar obwod )
(caadr obwod) (cadadr obwod)
(caar obwod) (cadadr obwod)))
(setq OdsOdl (/ TextSize 4.0))
(setq OdsPts (list (- (nth 0 Pts) OdsOdl) (- (nth 1 Pts )OdsOdl) ; odsunięcie ramki - obwódki wokół tekstu
(+ (nth 2 Pts )OdsOdl) (- (nth 3 Pts )OdsOdl)
(+ (nth 4 Pts ) OdsOdl) (+ (nth 5 Pts )OdsOdl)
(- (nth 6 Pts ) OdsOdl) (+ (nth 7 Pts )OdsOdl)
))
(setq frame(vlax-invoke-method *Model* 'AddLightweightPolyline (l2v OdsPts )) ) ; tworzenie ramki
(vlax-put-property frame 'Closed :vlax-true)
(vlax-invoke-method frame 'Move (vlax-3d-point (list 0 0 0 ) ) (vlax-get-property napis_obj 'InsertionPoint ) )
; przesunięcie ramki do punktu wstawienia tekstu.
(setq KatObr 15)
(vlax-invoke-method frame 'Rotate (vlax-3d-point wst_pt ) (d2r KatObr))
(vlax-invoke-method napis_obj 'Rotate (vlax-3d-point wst_pt ) (d2r KatObr))
)

 

Wykonanie w ZWCAD 2023

 wstaw date i godzine

 

Wykonanie w ZWCAD Classic

 LISP Czas Classic