Ten skrypt pozwala załadować warstwy do projektu z innego pliku.

 

Wczytanie warstw z zewnętrznego pliku

 

Polecenie do uruchomienia skryptu LISP: WarstwyZSzablonu

 

Kod źródłowy z opisem

 

;;; Wczytywanie warstw z zewnętrznego pliku
;;; zwcad.pl
;;; Polecenie do uruchomienia skryptu LISP: WarstwyZSzablonu
;;; Opis: https://www.zwcad.pl/materialy-edukacyjne/kurs-lisp/przyklady-lisp/195-wczytywanie-warstw-z-zewnetrznego-pliku.html
(vl-load-com)
(setq *ZWCAD* (vlax-get-acad-object))
(setq *Rysunki* (vla-get-documents *ZWCAD* ))
(setq *Rysunek* (vla-get-activedocument *ZWCAD* ))
(setq *Warstwy* (vlax-get-property *Rysunek* 'Layers ))
(defun C:WarstwyZSzablonu ( / Szab_Sciezka Szab_Dok Szab_Warstwy War_nazwa StaraWarstwa % NowaWarstwa )
;----------------------------------------------------------
; funkcja wczytuje warstwy wraz z ich stanem z pliku wskazanego przez użytkownika do aktualnego pliku
;----------------------------------------------------------
(setq Szab_Sciezka (getfiled "Wskaż plik wzorcowy" "" "dwg" 2))
(setq Szab_Dok(vlax-invoke-method *Rysunki* 'Open Szab_Sciezka t t ) )
(setq Szab_Warstwy (vlax-get-property Szab_Dok 'Layers ) )
(setq % (vlax-invoke-method Szab_Warstwy 'Item 1) )
(vlax-for % Szab_Warstwy
(setq War_nazwa (vlax-get-property % 'Name )); (setq War_nazwa "des")
(setq StaraWarstwa (vl-catch-all-apply 'vlax-invoke-method (list *Warstwy* 'Item War_nazwa)))
; pobranie warstwy z aktualnego ryunku o takiej samej nazwie, jak kolejne warstwy w rysunku wzorcowym
(if (vl-catch-all-error-p StaraWarstwa) ; wystąpienie błędu oznacza, że w aktualnym rysunku nie
; ma jeszcze warstwy o takiej nazwie, musimy więc ją utworzyc
(progn
(setq NowaWarstwa(vlax-invoke-method *Warstwy* 'Add War_nazwa ))
; Nowa warstwa
(vlax-put-property NowaWarstwa 'Freeze (vlax-get-property % 'Freeze ))
; przypisanie jej właściwości z warstwy wzorcowej
(vlax-put-property NowaWarstwa 'LayerOn (vlax-get-property % 'LayerOn ))
(vlax-put-property NowaWarstwa 'Linetype (vlax-get-property % 'Linetype ))
(vlax-put-property NowaWarstwa 'Lineweight (vlax-get-property % 'Lineweight ))
(vlax-put-property NowaWarstwa 'Lock (vlax-get-property % 'Lock ))
(vlax-put-property NowaWarstwa 'Material (vlax-get-property % 'Material ))
(vlax-put-property NowaWarstwa 'PLottable (vlax-get-property % 'Plottable ))
(vlax-put-property NowaWarstwa 'TrueColor (vlax-get-property % 'TrueColor ))
))
)
(vlax-invoke-method Szab_Dok 'Close )
(princ )
)
 

Wykonanie w ZWCAD 2023

warstwy