Dzięki temu skryptowi można zapisać dowolne teksty z projektu do zewnętrznego pliku .txt.

 

Zapis tekstu do pliku .txt

 

Polecenie do uruchomienia skryptu LISP: ZapiszTekst

 

Kod źródłowy z opisem

 

;;; Zapis tekstów do zewnętrznego pliku
;;; zwcad.pl
;;; Polecenie do uruchomienia skryptu LISP: ZapiszTekst
;;; Opis: https://www.zwcad.pl/materialy-edukacyjne/kurs-lisp/przyklady-lisp/186-zapis-tekstow-do-zewnetrznego-pliku.html
(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 2023

zapisywanie do pliku txt

 

Wykonanie w ZWCAD 2015

 

LISP ZapiszTekst 2015

 

Wykonanie w ZWCAD Classic

LISP ZapiszTekst Classic