Program wpisuje zawartość pliku tekstowego do aktualnego rysunku DWG w programie CAD.
Polecenie do uruchomienia skryptu LISP: CzytajPlik
Kod źródłowy z opisem
;;; Odczyt pliku tekstowego
;;; zwcad.pl
;;; Polecenie do uruchomienia skryptu LISP: CzytajPlik
;;; Opis: https://www.zwcad.pl/materialy-edukacyjne/kurs-lisp/przyklady-lisp/111-2-odczyt-pliku-tekstowego.html
; tworzenie funkcji:
; defun - słowo kluczowe tworzące nową funkcję
; tekst po słowie defun to nazwa funkcji
; domyślnie wszsytkie zmienne w programie są traktowane jako zmienne globalne.
; jeśli chcemy, żeby zmienne miały zasięg lokalny, konieczne jest ich wylistowanie wewnątrz nawiasu definicji funkcji
; W nawiasie przed znakiem / znajduje się lista parametrów funkcji
; W nawiasie po znaku / podawane są zmienne lokalne funkcji. Ważne jest, aby wpisywać te nazwy zmiennych, oczywiście można to pominąć, jednak łątwo może to spowodować, że zmienne zostaną nadpisane w innej funkcji jeśli uzyjemy tych samych nazw zmiennych w programie CAD.
(vl-load-com)
(setq *ZWCAD* (vlax-get-acad-object))
(setq *Rysunek* (vla-get-activedocument *ZWCAD*))
(setq *Model* (vla-get-Modelspace *Rysunek*))
(defun CzytajPlik (Sciezka / Linia IDPliku ListaZPLiku)
;--------------------------------------------------------
; Funkcja odczytuje plik tekstowy
; Argument: Ścieżka dostępu do pliku
; Wynik: Funkcja zwraca listę tekstów zapisanych w pliku
;--------------------------------------------------------
(setq IDPliku (open Sciezka "R")) ; Otwarcie pliku i zapisanie jego identyfikatora do zmiennej (IDPliku)
(if IDPliku ; Czy udało się otworzyć plik (nie jeśli np plik jest używany przez inny program)
(progn
(setq Linia (read-line IDPliku)) ; Odczyt linii tekstu z pliku
(while Linia ;
(setq ListaZPLiku(append ListaZPLiku(list Linia)))
(setq Linia (read-line IDPliku)) ; Odczyt linii tekstu z pliku. Jeśli zwróci pustą wartość, pętla zostanie zakończona.
)
(close IDPliku) ; Zamknięcie pliku
))
ListaZPLiku ; zwrot funkcji. Każda funkcja zwraca taką wartość, jakie jest ostatnie wyrażenie przed zakończeniem funkcji
)
(defun TekstyDoRysunku ( Dane / )
;--------------------------------------------------------
; Funkcja dodaje napisy do rysunku
; Argument: Lista tekstów
; Wynik: nil
;--------------------------------------------------------
(setq dlugosclisty (length Dane)) ; length zwraca ilość elementów w liście
(setq i 0)
(repeat dlugosclisty
(setq Tekst (vla-addText *Model* (nth i Dane) (vlax-3d-point (list 0 (* -1.5 i) 0)) 1)) ; Tworzy obiekt tekstu w określonym punkcjie, zawierający określoną treść.
(setq i (1+ i))
)
nil
)
(defun C:CzytajPlik ( / SciezkaPliku DaneZPliku)
(setq SciezkaPliku(getfiled "Wskaż plik" "" "txt" 2)) ; Funkcja prosi Użytkownika o wskazanie pliku
(setq DaneZPliku(CzytajPlik SciezkaPliku))
(TekstyDoRysunku DaneZPliku)
nil ; potrzebne jeśli nie chemy, żeby funkcja zwracała jakąkolwiek wartość
)
br /
Wykonanie w ZWCAD 2023
Wykonanie w ZWCAD 2015