Hallo zusammen!
Die beste Antwort wird also @Konti zugeschrieben: Auch wenn ich in vielen anderen Antworten Elemente gefunden habe, die mich freigeschaltet haben, ist es seine, die es mir ermöglicht hat, am meisten voranzukommen (und dies trotz der Tatsache, dass sein Code in C# geschrieben ist).
Vielen Dank @Konti !
Hier ist die Lösung im Detail:
Wie der @Konti Code zeigt, sollte der Fehlercode 51 swSketchErrorExtRefFail verwendet werden.
Wenn eine Komponente gelöscht wird, ohne die zugeordneten Abhängigkeiten zu entfernen, nehmen die Beschränkungsreferenzen ein Flag an **External**

Aus irgendeinem Grund bestand die erste Idee, die ich hatte, darin, zu überprüfen, ob die Komponente, die mit der Wackelbeschränkungsreferenzentität verknüpft ist, nicht funktioniert: Es war immer noch ein Dateiname damit verknüpft, aber er hatte nichts mit dem ursprünglichen zu tun. Kurz! Unverständlich.
Die Bedingung dafür, dass dies funktioniert, ist, dass die Systemoption Fehlende Constraint-Referenzen als Fehler behandeln überprüft werden muss (genau damit Code 51 mit dem Constraint verknüpft werden kann).
VORSICHTIG!! Wenn eine Datei fehlt (d.h. SW kann sie nicht finden), wird sie im Baum und für alle Konfigurationen, falls vorhanden, als gelöscht angezeigt, und die damit verbundenen Einschränkungen gehen auch auf den Fehlercode 51 zurück; Es ist daher notwendig, über die Lösung/das Finden dieser Komponenten nachzudenken, bevor man das Makro ausnutzt.
Das andere Problem, auf das ich gestoßen bin, hängt mit der Funktion zusammen, Einschränkungen nach Status zu gruppieren (*Vielen Dank an @Sylk , dass diese Anzeigeoption in einem seiner Beiträge angezeigt wurde):
Wenn es sich bei der Abhängigkeit um eine Unterfunktion der Funktion Standardabhängigkeiten in der Struktur einer Baugruppe handelt, befinden sich die Benutzerordner oder Ordner für die automatische Gruppierung auf derselben Ebene und müssen verworfen werden, bevor die Abhängigkeit analysiert wird.
Bitte schön! Nochmals vielen Dank an alle.
Unten ist mein Code:
Option Explicit
Dim swApp As SldWorks.SldWorks
Dim swModel As SldWorks.ModelDoc2
Dim swModelDocExt As SldWorks.ModelDocExtension
Dim swSelMgr As SldWorks.SelectionMgr
Dim swFeat As SldWorks.Feature
Dim swMateGroup As SldWorks.Feature
Dim swSubFolder As SldWorks.Feature
Dim swMateFeat As SldWorks.Feature
Dim swSubFeat As SldWorks.Feature
Dim swMate As IMate2
Dim swComp As SldWorks.Component2
Dim swMateEnt(2) As SldWorks.MateEntity2
Dim fileName As String
Dim Error As Long
Dim IsWarning As Boolean
Dim i As Long
Dim DeleteOption As Long
Dim status As Boolean
Dim Append As Boolean
Dim Mark As Integer
Dim List As Boolean
Sub main()
Set swApp = Application.SldWorks
Set swModel = swApp.ActiveDoc
Set swSelMgr = swModel.SelectionManager
Set swModelDocExt = swModel.Extension
'Get the first feature in the assembly
Set swFeat = swModel.FirstFeature
'Iterate over features in FeatureManager design tree
Do While Not swFeat Is Nothing
If "MateGroup" = swFeat.GetTypeName Then
Set swMateGroup = swFeat
Exit Do
End If
Set swFeat = swFeat.GetNextFeature
Loop
Debug.Print " " & swMateGroup.Name
Debug.Print ""
Set swSubFeat = swMateGroup.IGetFirstSubFeature
'iterate over subfeatures (Mate or folders)
Do While Not swSubFeat Is Nothing
If "FtrFolder" = swSubFeat.GetTypeName Then
'--------------------------------------------------------------------
Debug.Print "swSubFeat TypeName: " & swSubFeat.GetTypeName _
& ", Name: " & swSubFeat.Name
'--------------------------------------------------------------------
GoTo Line1
ElseIf "GroupedMatesFolder" = swSubFeat.GetTypeName Then
'--------------------------------------------------------------------
Debug.Print "swSubFeat TypeName: " & swSubFeat.GetTypeName _
& ", Name: " & swSubFeat.Name
'--------------------------------------------------------------------
GoTo Line1
End If
'MsgBox swSubFeat.GetTypeName
Set swMate = swSubFeat.GetSpecificFeature2
If Not swMate Is Nothing Then
Error = swSubFeat.GetErrorCode2(IsWarning)
' Error 51 ?
If Error = 51 Then List = swSubFeat.Select2(True, 0)
End If
Line1:
Set swSubFeat = swSubFeat.IGetNextSubFeature
Loop
'Delete List
' To delete absorbed features, use enum swDeleteSelectionOptions_e.swDelete_Absorbed
' To delete children features, use enum swDeleteSelectionOptions_e.swDelete_Children
' To keep absorbed features and children features, set DeleteOption = 0
DeleteOption = swDeleteSelectionOptions_e.swDelete_Absorbed
'DeleteOption = swDeleteSelectionOptions_e.swDelete_Children
'DeleteOption = 0
'DeleteOption =swDeleteSelectionOptions_e.swDelete_Absorbed + swDeleteSelectionOptions_e.swDelete_Children
status = swModelDocExt.DeleteSelection2(DeleteOption)
End Sub