Option Explicit
Dim swApp As SldWorks.SldWorks
Dim swModel As ModelDoc2
Dim cpm As CustomPropertyManager
Sub DeleteProps()
Set swApp = Application.SldWorks
Set swModel = swApp.ActiveDoc
Dim names() As String
Set cpm = swModel.Extension.CustomPropertyManager("")
names = cpm.GetNames
Dim i As Integer
For i = 0 To UBound(names)
Debug.Print names(i)
If names(i) <> "PROP1" Or names(i) <> "PROP2" Or names(i) <> "PROP3" Then cpm.Delete names(i)
Next
End Sub
Lub, jeśli masz narzędzia, użyj narzędzia smartproperties w narzędziach Mycadtools.
Dzięki temu narzędziu możesz nawet nakładać go partiami.
Ustaw cpm = swModel.Extension.CustomPropertyManager("") Nazwy = CPM. GetNames (DostaćNazwy)
Dim i As Liczba całkowita Dla i = 0 Do UBound(nazwy) Nazwy Debug.Print(i) Jeśli nazwy(i) <> "CODE_ARTICLE" Lub nazwy(i) <> "NUMERO_PLAN" Następnie cpm. Usuwanie nazw(i) Następny
Przepraszam, że musisz umieścić i zamiast złota, ponieważ wymazujesz tak różne od pop& i tak różne od prop2
Bądź ostrożny, pęknięcie jest ważne.
Jeśli to konieczne, w fazie testowej możesz spróbować tego:
Option Explicit
Dim swApp As SldWorks.SldWorks
Dim swModel As ModelDoc2
Dim cpm As CustomPropertyManager
Sub DeleteProps()
Set swApp = Application.SldWorks
Set swModel = swApp.ActiveDoc
Dim names() As String
Set cpm = swModel.Extension.CustomPropertyManager("")
names = cpm.GetNames
Dim i As Integer
For i = 0 To UBound(names)
Debug.Print names(i)
If names(i) <> "Prop1" And names(i) <> "Prop2" Then Debug.Print names(i) & ": Effacé"
'If names(i) <> "Prop1" And names(i) <> "Prop2" Then cpm.Delete names(i)
Next
End Sub
A następnie edytujesz makro i uruchamiasz je z edytora. I sprawdzasz okno wykonywania, pokazuje nazwę właściwości, a następnie nazwę właściwości: Usunięte, jeśli trzeba ją usunąć. W przeciwnym razie przechodzi do następnej właściwości.