Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Rund um AutoCAD
  Layer mit Eigenschaften kopieren und umbenennen

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
  
Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte
Autor Thema:  Layer mit Eigenschaften kopieren und umbenennen (3750 mal gelesen)
Vermesser1
Mitglied
Vermesser

Sehen Sie sich das Profil von Vermesser1 an!   Senden Sie eine Private Message an Vermesser1  Schreiben Sie einen Gästebucheintrag für Vermesser1

Beiträge: 5
Registriert: 23.08.2005

erstellt am: 26. Sep. 2005 10:47    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

ich habe das Problem, dass ich ca. 600 Layer mit allen Eigenschaften je 18 mal kopieren muss und einen fixen Teil umbenennen.
z.B. Soll aus dem Layer
U_01_SY_TX_P-Bohrung-abgebohrt
der Layer
U_02_SY_TX_P-Bohrung-abgebohrt
werden. D.h. die Layer unterscheiden sich durch die 3te und 4te Stelle. Von 01 bis 18.

Kann mir hier jemand helfen?
Vielen Dank
Vermesser1

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

CADdog
Ehrenmitglied V.I.P. h.c.




Sehen Sie sich das Profil von CADdog an!   Senden Sie eine Private Message an CADdog  Schreiben Sie einen Gästebucheintrag für CADdog

Beiträge: 2237
Registriert: 30.04.2004

Intel Xeon 3,6 GHz
32 GB RAM
NVIDIA Quadro P2000
Windows 10 Enterprise
AutoCADmap 3D 2023
WS-Landcad 2023
QGIS 3.10

erstellt am: 26. Sep. 2005 11:01    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Vermesser1 10 Unities + Antwort hilfreich

Hallo,
ohne Programmierung kann ich mir nur vorstellen, die Zeichnung 18 mal unter verschiedenen Namen abzuspeichern, mit _RENAME in jeder Zeichnung die Layernamen zu ändern und dann die Layer wieder in die Ausgangszeichnung zu holen
vergiss nicht, MAXSORT zu erhöhen

------------------

edit: ich hab noch mal nachdacht und muss sagen, bevor ich mir über 10.000 Layer antue, würde ich über die Arbeit mit XRef nachdenken

gruß
CADdog,
the dog formerly known as TR

AutoCAD spricht mit einem, aber viele hören nicht zu.

[Diese Nachricht wurde von CADdog am 26. Sep. 2005 editiert.]

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Vermesser1
Mitglied
Vermesser

Sehen Sie sich das Profil von Vermesser1 an!   Senden Sie eine Private Message an Vermesser1  Schreiben Sie einen Gästebucheintrag für Vermesser1

Beiträge: 5
Registriert: 23.08.2005

erstellt am: 26. Sep. 2005 11:20    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo CADdog,
danke für den Beitrag.
Allerdings kann ich mit _RENAME nur einzelne Layer umbenennen.
Ich habe ca. 600 Layernamen die im Namen *_01_* enthalten, was in *_02_* umbenannt werden muss.
Sonst ist die Idee mit Zeichnung kopieren und umbenennen gut.

Wie kann ich nun alle 600 Layer gleichzeitig umbenennen?
danke
Vermesser1

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Nauplia
Mitglied
Zeichnerin Tiefbau


Sehen Sie sich das Profil von Nauplia an!   Senden Sie eine Private Message an Nauplia  Schreiben Sie einen Gästebucheintrag für Nauplia

Beiträge: 114
Registriert: 24.06.2002

WIN 7; Intel Xeon CPU 3.07 GHz; 8 GB RAM; Bricscad Pro 19; ProVi_Brics V6; Was man nicht begreift, verlernt man auch nicht...

erstellt am: 26. Sep. 2005 11:24    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Vermesser1 10 Unities + Antwort hilfreich

Wenn ich Dich richtig verstehe, würde ich an Deiner Stelle beim Befehl _rename Platzhalter verwenden, also in der oberen Zeile *01* angeben, das dann in *02* umbennant werden soll.

------------------

Gruß aus der Provence

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

CADmium
Moderator
Maschinenbaukonstrukteur




Sehen Sie sich das Profil von CADmium an!   Senden Sie eine Private Message an CADmium  Schreiben Sie einen Gästebucheintrag für CADmium

Beiträge: 13508
Registriert: 30.11.2003

Hinweis: Meine Mitarbeit auf CAD.DE ist fakultativ, unentgeltlich und beruht nur auf einem ausgeprägtem Helfersyndrom.

erstellt am: 26. Sep. 2005 11:26    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Vermesser1 10 Unities + Antwort hilfreich


rename.jpg

 
z.B. probier mal mit Platzhalter

.. ansonsten .. Programmierung!

------------------
- Thomas -
"Bei 99% aller Probleme ist die umfassende Beschreibung des Problems bereits mehr als die Hälfte der Lösung desselben."

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

g.r
Mitglied
Beruf? Ja! Ausbildung: auch!!


Sehen Sie sich das Profil von g.r an!   Senden Sie eine Private Message an g.r  Schreiben Sie einen Gästebucheintrag für g.r

Beiträge: 603
Registriert: 06.07.2005

ACA 2010
Scaleo, AMD Athlon64 DC4600+
acer Aspire 8930 4C 4GB
VISTA Ultimate
HP 750C
AMD Athlon, W2k

erstellt am: 26. Sep. 2005 11:30    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Vermesser1 10 Unities + Antwort hilfreich

ich hätte da einen eher rustkalen tip.
hallo vermesser1.
über expresstool -> layer -> layermanager, die layer exportieren.
(erstellt datei mit extension *.lay)
diese datei über einen texteditor nach word bringen. darin die suchen/ersetzen funktion nutzen. danach wieder zurück über den texteditor abspeichern. wichtig! die extension.
die geänderte *.lay-datei in eine neue dwg importieren. und das 18 mal.
besser wüsst´ich es im moment nicht.
gruß günter

------------------
Lieber meditieren - als ´rumsitzen und nix tun.

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Stelli1
Ehrenmitglied
Verm.-Ing.


Sehen Sie sich das Profil von Stelli1 an!   Senden Sie eine Private Message an Stelli1  Schreiben Sie einen Gästebucheintrag für Stelli1

Beiträge: 1521
Registriert: 17.08.2005

Map 2000-2013, Rasterdesign
MapGuide 6.5 - 2013
Oracle 9i,10g,11g Enterprise
autodesk Topobase 2-2012
VS6, VS.net

erstellt am: 26. Sep. 2005 11:30    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Vermesser1 10 Unities + Antwort hilfreich

Hallo Vermesserkollege,

hier ein kleines VB Srcipt.

Code:

Option Explicit

Sub Layer_kopieren()
    Dim NewLayer As AcadLayer
    Dim OldLayer As AcadLayer
    Dim NeuerLayerName As String
    Dim Nummer As String
    Dim LayerCol As AcadLayers
   
    On Error GoTo Ende
    Nummer = ThisDrawing.Utility.GetString(0, Chr$(10) & "Layernummer angeben: ")
    On Error GoTo 0
   
    Set LayerCol = ThisDrawing.Layers
    For Each OldLayer In LayerCol
        If OldLayer.Name Like "U_*_Layer*" Then
          Debug.Print OldLayer.Name
          NeuerLayerName = Left$(OldLayer.Name, 2) & Nummer & Mid$(OldLayer.Name, 5)
          Set NewLayer = ThisDrawing.Layers.Add(NeuerLayerName)
          With NewLayer
              .Color = OldLayer.Color
              .Freeze = OldLayer.Freeze
              .LayerOn = OldLayer.LayerOn
              .Linetype = OldLayer.Linetype
              .Lineweight = OldLayer.Lineweight
              .Lock = OldLayer.Lock
              ' usw.
          End With
        End If
   
    Next OldLayer
Ende:
   
End Sub



Stelli

------------------

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Langenhorst
Mitglied
Konstrukteur/Bauzeichner


Sehen Sie sich das Profil von Langenhorst an!   Senden Sie eine Private Message an Langenhorst  Schreiben Sie einen Gästebucheintrag für Langenhorst

Beiträge: 307
Registriert: 21.02.2003

erstellt am: 26. Sep. 2005 12:06    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Vermesser1 10 Unities + Antwort hilfreich

Hallo Vermesser,

ich würde die das Layerkonvertierungsprogramm empfehlen, falls du keine Lisp dafür schreiben möchtest. Dieses findest du unter CAD-Standards - Layer konvertieren (oder so ähnlich).
Mit diesem brauchst du dir nur einmal die Mühe machen, die neuen Layer zu erstellen und im Programm anzugeben, welcher Layer durch welchen ersetzt werden soll. Dann kannst du dieses abspeichern und in den nächsten Zeichnungen kannst du diese "Umbenennung" so wieder verwenden.

Schöne Grüße,

Michael

------------------

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Vermesser1
Mitglied
Vermesser

Sehen Sie sich das Profil von Vermesser1 an!   Senden Sie eine Private Message an Vermesser1  Schreiben Sie einen Gästebucheintrag für Vermesser1

Beiträge: 5
Registriert: 23.08.2005

erstellt am: 26. Sep. 2005 12:09    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo Leute,
vielen Dank an alle.
Habe das VB Script gewählt, weil es die Layer gleich in der Zeichnung kopiert.
Mit Express-Tools werden leider nur die Namen und nicht die Eigenschaften exportiert.
Mit _Rename wird der alte layer umbenannt und ich müsste die 18 Dateien wieder zusammenkopieren.
Danke an alle
Vermesser1

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

gastarbeiter
Mitglied



Sehen Sie sich das Profil von gastarbeiter an!   Senden Sie eine Private Message an gastarbeiter  Schreiben Sie einen Gästebucheintrag für gastarbeiter

Beiträge: 45
Registriert: 22.08.2012

AutoCad Civil 2014 3D
Windows 7 Pro 64Bit
Prozessor : Intel Core I7 3.4ghz
RAM : 8 GB
Grafik : AMD Radeon HD 6570

erstellt am: 29. Jul. 2013 09:10    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Vermesser1 10 Unities + Antwort hilfreich

hallo!
Suche genau so eine Möglichkeit mit dem Skript für meine Zwecke.
Wie kriege ich es nur unter Civil 2014 zum laufen?


[Diese Nachricht wurde von gastarbeiter am 29. Jul. 2013 editiert.]

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

gastarbeiter
Mitglied



Sehen Sie sich das Profil von gastarbeiter an!   Senden Sie eine Private Message an gastarbeiter  Schreiben Sie einen Gästebucheintrag für gastarbeiter

Beiträge: 45
Registriert: 22.08.2012

AutoCad Civil 2014 3D
Windows 7 Pro 64Bit
Prozessor : Intel Core I7 3.4ghz
RAM : 8 GB
Grafik : AMD Radeon HD 6570

erstellt am: 29. Jul. 2013 13:32    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Vermesser1 10 Unities + Antwort hilfreich

Oder gibt es schon mittlerweile in AutoCad integrierte Lösungen um mehrere Layer zu kopieren und gleich unbenennen? Wir müssen täglich 10-20 Layer händisch kopieren und um eine umbenennen..

Z.B.
FF-001-Bem in FF-002-Bem, FF-003-Bem u.s.w.

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

rexxitall
Mitglied
Dipl. -Ing. Bau


Sehen Sie sich das Profil von rexxitall an!   Senden Sie eine Private Message an rexxitall  Schreiben Sie einen Gästebucheintrag für rexxitall

Beiträge: 266
Registriert: 07.06.2013

erstellt am: 29. Jul. 2013 23:39    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Vermesser1 10 Unities + Antwort hilfreich

Neuer Layer zu erzeugen ist nicht so wirklich das Problem 

Anbei ein paar VBA routinen zum Einstieg 
Wenn ich heute richtig gelesen habe ist vba bei autodesk neuerdings nicht mehr so ganz tot
ACAD 2014 hat nen neuen nativen 64 Bit interpreter - schaut aus als waers der selbe wie in office ...
OK hier ein paar routinen zum spielen 

Es ist definitiv auch moeglich alle diese Layerinformationen in einer Tabelle etc vorzuhalten.
Fuer diejenigen die nicht scripten wollen.
Layer kann man auch mit bloecken erzeugen.
Einfach z.B. Punkte mit jeweils einem Punkt auf einem eingestellten layer erzeugen.
Den Block einladen = alle Layer da.
Block loeschen und _purge = alle unbenutzen Layer weg.

Ich weis auch nicht warum man hunderte layer braucht.
Sehr komplexe Informationen lassen sich leicht mit Dictionarys an an Elemente binden und auch auslesen.
Sofern man das einmal durchgearbeitet hat. Die ACAd VBA Hilfe ist ein wirklich guter Start Punkt 
Dim x as acaddictionary und dann auf acaddictionary mal F1 loslassen.

anyhow:

Sub Layer_create()
    Dim layCurrent As AcadLayer
    On Error Resume Next
    Dim PREFIX As String
    Dim SUFFIX As String

    Dim layername As String
    Dim P() As String
    Dim S() As String
    PREFIX = InputBox("LAYERPREFIX", "LAYER CREATE", "")
    SUFFIX = InputBox("LAYERSUFFIX", "LAYER CREATE", "")
    If SUFFIX = "" Then Exit Sub
    PREFIX = UCase(PREFIX)
    SUFFIX = UCase(SUFFIX)
    P = Split(PREFIX)
    S = Split(SUFFIX)

    On Error Resume Next
    For I = LBound(P) To UBound(P)
        Set layCurrent = ThisDrawing.layers.ADD(strLayer)
        For j = LBound(S) To UBound(S)

            Debug.Print layername
            Call ThisDrawing.layers.ADD(layername)
        Next
    Next
    On Error GoTo 0
End Sub

Layr namen verfrickeln auch kein problem 
Sub LayertoLowerCase()
'This routine reformats all layer names to all lowercase.
    Dim DwgLayer As AcadLayer
    For Each DwgLayer In ThisDrawing.layers
        DwgLayer.Name = LCASE(DwgLayer.Name)
    Next DwgLayer
End Sub

Sub LayertoUpperCase()
'This routine reformats all layer names to all uppercase.
    Dim DwgLayer As AcadLayer
    For Each DwgLayer In ThisDrawing.layers
        DwgLayer.Name = UCase(DwgLayer.Name)
    Next DwgLayer
End Sub


Schick ist auch layer zu clonen

Function Layer_exist(ByRef layername As String) As Boolean
    Dim objLayer As AcadLayer
    For Each objLayer In ThisDrawing.layers
        If UCase(objLayer.Name) = UCase(layername) Then
            Layer_exist = True
            Exit Function
        End If
    Next objLayer
    Layer_exist = False
End Function

Function Layer_find(ByRef layername As String) As AcadLayer
    Set Layer_find = Nothing
    If S = "" Then Exit Function
    Dim objLayer As AcadLayer
    For Each objLayer In ThisDrawing.layers
        If UCase(objLayer.Name) = UCase(layername) Then
            Layer_find = objLayer
            Exit Function
        End If
    Next objLayer

End Function

Sub Layer_clone(ByVal layername As String, ByVal template As String, Optional Show As Integer = -1)

    Dim LoseReturn As Long
    Dim NewLayer As AcadLayer
    Dim OldLayer As AcadLayer
    Dim TESTlayer As AcadLayer
    Set OldLayer = Layer_find(template)
    Set NewLayer = Layer_find(layername)
    If NewLayer Is Nothing Then
        Set NewLayer = ThisDrawing.layers.ADD(layername)
        If LayerExist(template) = False Then template = "0"
        NewLayer.color = ThisDrawing.layers(template).color
        NewLayer.linetype = ThisDrawing.layers(template).linetype
        NewLayer.lineweight = ThisDrawing.layers(template).lineweight
        NewLayer.Material = ThisDrawing.layers(template).Material
    End If
    If Show <> -1 Then
        If Show = 1 Then NewLayer.LAYERON = True
        If Show = 0 Then NewLayer.LAYERON = False
    End If


End Sub


und umbenennen  und status setzen ist auch kein hexenwerk

Sub layer_rename(ByVal selectionsetobject As AcadSelectionSet)

    Dim objLayer As AcadLayer
    Dim entity As AcadEntity
    For Each entity In selectionsetobject
        layername = entity.LAYER
        newname = InputBox("Layername", layerrename, layername)
        For Each objLayer In ThisDrawing.layers
            If objLayer.Name = layername Then
                On Error Resume Next
                objLayer.Name = newname

                objLayer.Freeze = False
                objLayer.LAYERON = True
                objLayer.Lock = False
               
                ThisDrawing.ActiveLayer = objLayer

                On Error GoTo 0
                Exit Sub
            End If
        Next
    Next

End Sub

------------------
Wer es nicht versucht, hat schon verlorn 
Und bei 3 Typos gibts den vierten gratis !

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

gastarbeiter
Mitglied



Sehen Sie sich das Profil von gastarbeiter an!   Senden Sie eine Private Message an gastarbeiter  Schreiben Sie einen Gästebucheintrag für gastarbeiter

Beiträge: 45
Registriert: 22.08.2012

AutoCad Civil 2014 3D
Windows 7 Pro 64Bit
Prozessor : Intel Core I7 3.4ghz
RAM : 8 GB
Grafik : AMD Radeon HD 6570

erstellt am: 01. Aug. 2013 11:08    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Vermesser1 10 Unities + Antwort hilfreich

Ich kann mit so vielen Routinen erlich gesagt nicht viel anfangen.
Kenne mich mit VBA nicht aus...
Wollte mir nur die tägliche Arbeit durch den Skript oben erleichtern.
Hab den jezt auch als Makro zum laufen gekriegt, nur komme ich nicht weiter an der Stelle, wo nach dem Layernamen gefragt wird? Was soll ich denn dort eingeben? Nummer von dem alten Layer? Egal was ich eingebe, es passiert danach nichts und wird kein neuer Layer erzeugt. Kommt auch keine Fehlermeldung oder so...

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2023 CAD.de | Impressum | Datenschutz