(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:Test ( / 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 )
)