Chcę zautomatyzować nazewnictwo moich warstw w solidworks.
W moim przykładzie mamy wiele warstw, których już nie używamy, ale które istnieją w starych płaszczyznach.
Kiedy chcę wyretuszować stare plany, chciałbym usunąć wszystkie warstwy z wyjątkiem niektórych warstw (wymiary, adnotacje, rysunek, Indeks A, Indeks B, Indeks B....)
Wiem, jak usunąć wszystkie warstwy, ale nie wykluczać niektórych.
Option Explicit
Dim swApp As SldWorks.SldWorks
Dim swModel As SldWorks.ModelDoc2
Dim swLayerMgr As SldWorks.LayerMgr
Dim swLayer As SldWorks.Layer
Dim vLayerArr As Variant
Dim vLayer As Variant
Sub main()
Set swApp = Application.SldWorks
Set swModel = swApp.ActiveDoc
If swModel Is Nothing Then
swApp.SendMsgToUser2 "pas de documents ouvert", swMbWarning, swMbOk
Exit Sub
End If
If swModel.GetType <> 3 Then
swApp.SendMsgToUser2 "Ouvrir une mise en plan", swMbWarning, swMbOk
Exit Sub
End If
swModel.ViewZoomtofit2
Set swLayerMgr = swModel.GetLayerManager
vLayerArr = swLayerMgr.GetLayerList
Dim LayerList As Object
Set LayerList = CreateObject("Scripting.Dictionary")
LayerList.Add "cotations", 0
LayerList.Add "Annotations", 0
LayerList.Add "dessin", 0
LayerList.Add "IndiceA", 0
LayerList.Add "IndiceB", 0
For Each vLayer In vLayerArr
Set swLayer = swLayerMgr.GetLayer(vLayer)
If Not LayerList.Exists(swLayer.Name) Then
Debug.Print "Supprime " & swLayer.Name
swLayerMgr.DeleteLayer swLayer.Name
ElseIf swLayer.Name = "cotations" Then
swLayer.Color = 0
ElseIf InStr(swLayer.Name, "Indice") > 0 Then
swLayer.Color = 255
End If
Next
End Sub