(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:Czas ( / 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 ClassicLISP Czas Classic