Program wpisuje zawartość pliku tekstowego do aktualnego rysunku DWG.

 

; 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.

(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 2015+LISP CzytajPlik 2015

Wykonanie w ZWCAD ClassicLISP CzytajPlik Classic