(vl-load-com)

(setq *ZWCAD* (vlax-get-acad-object))
(setq *Rysunek* (vla-get-activedocument *ZWCAD* ))
(setq *Model* (vla-get-Modelspace *Rysunek* ))


(defun sel2list (selset / Wynik ileelementow i)
;----------------------------------------------------------
; funkcja zamienia zbiór wskazań na listę obiektów
; Argumenty: zbiór wskazań (selectionset)
; Wynik: lista
;----------------------------------------------------------

(setq ileelementow(sslength selset) )
(setq i 0 )
(repeat ileelementow
(setq Wynik (append Wynik (list (vlax-ename->vla-object(ssname selset i) ) )))
(setq i (1+ i ))
)
Wynik
)


(defun WskazTeksty ( / Wybrane Wynik )
;----------------------------------------------------------
; funkcja prosi użytkownika o wskazanie obiektów typu tekst, tekstwielowierszowy.
; Argumenty:
; Wynik:
;----------------------------------------------------------

(setq Wybrane(vl-catch-all-apply 'ssget (list (list(cons -4 "<or") (cons 0 "TEXT") (cons 0 "MTEXT") (cons -4 "or>")) ))) ; filtr pozwalający na wybranie jedynie tekstów jedno i wielowierszowych
(if (vl-catch-all-error-p Wybrane)
(progn
(prompt (vl-catch-all-error-message Wybrane))
(setq Wynik nil )
)
(progn
(setq Wynik (sel2list Wybrane )) ; zamiana zbioru wskazań na listę
)
)
Wynik
)

(defun C:ZapiszTekst ( / )
;----------------------------------------------------------
; funkcja Prosi Użytkownika o wskazanie tekstów i zapisuje ich wartości w kolejności alfabetycznej w zewnętrznym wskazanym pliku tekstowym
; Argumenty: brak
; Wynik: brak
;----------------------------------------------------------

(setq WybraneElementy (WskazTeksty) )
(setq SciezkaPliku (getfiled "Zapisz jako..." "" "txt" 1)) ; prosi Użytkownika o wskazanie pliku. ostatni parametr to tryb okna, określa, czy okno ma prosić o wskazanie pliku do odczytu czy do zapisu
(if (and (>(length WybraneElementy) 0) )
(progn
(setq Tresci (mapcar '(lambda (x) (vlax-get-property x 'TextString ) ) WybraneElementy)); dla każdego elementu listy pobiera treść tekstu
(setq Sortowane(vl-sort Tresci '< ) ) ; sortuje alfabetycznie treści tekstów

(ZapiszTekstDoPliku Sortowane SciezkaPliku)
)
)


)

(defun ZapiszTekstDoPliku (dane sciezka / )
;----------------------------------------------------------
; funkcja zapisuje listę danych do pliku tekstowego
; Argumenty: lista tekstów, ścieżka dostępu do lików
; Wynik: funkcja nie zwraca wartości, jedynie zapisuje do pliku
;----------------------------------------------------------
(setq Plik(open sciezka "w") ) ;otwarcie pliku do zapisu
(if Plik(progn
(foreach % dane
(write-line % Plik) ; zapis linii tekstu
)
(close plik) ; zamknięcie wskażnika pliku
))
nil
)

Wykonanie w ZWCAD 2015+LISP ZapiszTekst 2015

Wykonanie w ZWCAD ClassicLISP ZapiszTekst Classic