Je cherche a automatiser le nommage de mes calques sous solidworks.
Dans mon exemple nous avons un certain nombre de calques que nous n'utilisons plus mais qui existe dans des vieux plans.
Quand je veux retoucher les vieux plans, je souhaiterais supprimer tous les calques sauf certains calques (cotations, annotations, dessin , IndiceA, Indice B Indice ....)
Je sais comment supprimer tous les calques mais pas exclure certains.
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
Peux tu éclaircir la question : "est ce qu'il y a un paramètre pour activer un calque précis s'il n'existe pas de calque dans le fond de plan a traiter?"