Chcę usunąć wszystkie oprócz niektórych właściwości we wszystkich konfiguracjach pliku PRT, ASM i DRW @.
Znalazłem ten kod, który usuwa wszystkie właściwości w konfiguracjach, które trochę dostosowałem.
Jak wykluczyć wiele usług? Kod usuwa zmienną.
W moim przypadku DESIGNATION_FR, DESIGNATION_UK, CODE_ARTICLE i NUM_PLAN
Opcja jawna Sub main() Dim swApp jako SldWorks.SldWorks Dim swModel As SldWorks.ModelDoc2 Dim swConfig jako SldWorks.Configuration Dim swCustPropMgr As SldWorks.CustomPropertyManager Dim vPropNames jako wariant Dim vPropName As Variant Dim configNames As Variant Dim configName As Variant Ustaw swApp = Application.SldWorks Ustaw swModel = swApp.ActiveDoc
Dla każdej nazwy konfiguracji W configNames Ustaw swConfig = swModel.GetConfigurationByName(configName) Ustaw swCustPropMgr = swConfig.CustomPropertyManager vPropNames = swCustPropMgr.GetNames Dla każdej nazwy vPropName w vPropNames Jeśli vPropName <> "DESIGNATION_FR", to swCustPropMgr.Delete vPropName Zakończ jeżeli: Następny
Option Explicit
Sub main()
Dim swApp As SldWorks.SldWorks
Dim swModel As SldWorks.ModelDoc2
Dim swConfig As SldWorks.Configuration
Dim swCustPropMgr As SldWorks.CustomPropertyManager
Dim vPropNames As Variant
Dim vPropName As Variant
Dim configNames As Variant
Dim configName As Variant
Set swApp = Application.SldWorks
Set swModel = swApp.ActiveDoc
If swModel Is Nothing Then
swApp.SendMsgToUser2 "Ouvrir un fichier pièce", swMbWarning, swMbOk
Exit Sub
End If
If swModel.GetType <> swDocPART Then
swApp.SendMsgToUser2 "Ouvrir un fichier pièce", swMbWarning, swMbOk
Exit Sub
End If
Set swCustPropMgr = swModel.Extension.CustomPropertyManager(Empty)
vPropNames = swCustPropMgr.GetNames
For Each vPropName In vPropNames
If vPropName <> "DESIGNATION_FR" AND vPropName <> "DESIGNATION_UK" AND vPropName <> "CODE_ARTICLE" AND vPropName <> "NUM_PLAN" Then
swCustPropMgr.Delete vPropName
End If
Next
configNames = swModel.GetConfigurationNames
For Each configName In configNames
Set swConfig = swModel.GetConfigurationByName(configName)
Set swCustPropMgr = swConfig.CustomPropertyManager
vPropNames = swCustPropMgr.GetNames
For Each vPropName In vPropNames
If vPropName <> "DESIGNATION_FR" AND vPropName <> "DESIGNATION_UK" AND vPropName <> "CODE_ARTICLE" AND vPropName <> "NUM_PLAN" Then
swCustPropMgr.Delete vPropName
End If
Next
Next
End Sub
Prawdopodobnie wynika to z faktu, że nie masz żadnych właściwości w danej konfiguracji, możesz zrobić test, wpisując:
If IsEmpty(vPropNames) = False Then
For Each vPropName In vPropNames
If vPropName <> "DESIGNATION_FR" And vPropName <> "DESIGNATION_UK" And vPropName <> "CODE_ARTICLE" And vPropName <> "NUM_PLAN" Then
swCustPropMgr.Delete vPropName
End If
Next
End If