Ten LISP pozwala na proste numerowanie wierszy w tekście. Taka numeracja jest wprowadzona do tekstu i może być równie łatwo edytowana.
Polecenie do uruchomienia skryptu LISP: Numeracja
Kod źródłowy z opisem
;;; Numerowanie wierszy w tekście wielowierszowym
;;; zwcad.pl
;;; Polecenie do uruchomienia skryptu LISP: Numeracja
;;; Opis: https://www.zwcad.pl/materialy-edukacyjne/kurs-lisp/przyklady-lisp/128-numerowanie-wieszy-w-tekscie-wielowierszowym.html
(vl-load-com)
(setq *ZWCAD* (vlax-get-acad-object))
(setq *Rysunek* (vla-get-activedocument *ZWCAD* ))
(setq *Model* (vla-get-Modelspace *Rysunek* ))
(defun XGetInt (tresc domyslny / Wynik liczba)
;----------------------------------------------------------
;funkcja prosi użytkownika o podanie liczby rzeczywistej
;Argumenty: komunikat, zachętę, który sie wyświetli w linii poleceń w chwili uruchomienia funkcji
;Wynik: wartość liczbowa jeśli Użytkownik wpisze wartość z klawiatury
; wartość liczbowa domyślna jeśli Użytkownik na klawiaturze wciśnie [ENTER] [SPACJA]
; nil - jeśli Użytkownik na klawiaturze wciśnie [ESC]
;----------------------------------------------------------
(setq liczba(vl-catch-all-apply 'getint (list tresc )))
(if (vl-catch-all-error-p liczba) ; sprawdzenie czy zwrócony został obiekt błędu
(progn ; wystąpił błąd
(prompt (vl-catch-all-error-message liczba))
(setq Wynik nil )
)
(progn
(if (null liczba)
(setq Wynik domyslny )
(setq Wynik liczba)
)
)
)
Wynik
)
(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 C:Numeracja ( / Elem_set StartNr Elem_list IleElementow i Numer nowatresc x nowaLinia tresc )
;----------------------------------------------------------
; Funkcja numeruje wiersze w tekście wielowierszowym
; Argumenty: brak
; Wynik: brak
;----------------------------------------------------------
(setq Elem_set (ssget '((0 . "MTEXT"))))
(setq StartNr (XGetInt "Numer początkowy" 1))
(setq Elem_list (sel2list Elem_set))
(setq IleElementow (length Elem_list))
(setq i 0)
(setq Numer StartNr)
(setq nowatresc nil )
(repeat IleElementow
(setq x(nth i Elem_list ))
(setq tresc(vlax-get-property x 'TextString ))
(setq nowatresc (strcat (itoa Numer ) "." tresc ))
(setq nowaLinia 0 )
;(setq Czynastępny t)
(while nowaLinia
(setq Numer (1+ Numer))
(setq nowaLinia (1+ nowaLinia))
(setq nowatresc (vl-string-subst (strcat "\\P" (itoa Numer ) ".") "\\P" nowatresc nowaLinia) )
(setq nowaLinia (vl-string-position (ascii "\\P") nowatresc nowaLinia ))
)
(vlax-put-property x 'TextString nowatresc)
(vlax-invoke-method x 'Update )
(setq i ( 1+ i))
)
(princ)
)
(princ "" )
Wykonanie w ZWCAD 2023
Wykonanie w ZWCAD 2015