Hi @thomas_wegerBYFE5. Did that last code you posted increase the performance noticeably, as you were hoping for? It seemed to me like it might still benefit from a little tweaking to condense & simplify it a bit, so I created an alternate version of it for you to review. This version is just one Sub routine, instead of three, and only attempts to change the suppression status of any feature, if that feature does not already match the status being called for. That testing is done before they get put into the ObjectCollection, that way the 'group' process should work OK for you.
It first makes sure that the 'active' document is actually a part, to avoid that potential problem. Then makes sure each named feature can be found, then checks suppression status. If it was found, and suppression status does not match requested status, it gets added to the collection. Then the appropriate method is used to match the requested suppression status. Then I just added a couple lines at the end for updating & saving the part, but only if needed, and left the 'save' line commented out for now.
Sub SetFeaturesSuppression(FeatureNames As List(Of String), bSuppress As Boolean)
If IsNothing(FeatureNames) OrElse FeatureNames.Count = 0 Then Exit Sub
If ThisApplication.ActiveDocumentType <> DocumentTypeEnum.kPartDocumentObject Then Exit Sub
Dim oPDoc As PartDocument = ThisApplication.ActiveDocument
Dim oPDef As PartComponentDefinition = oPDoc.ComponentDefinition
Dim oFeatures As PartFeatures = oPDef.Features
Dim oFeatsToProcess As ObjectCollection = ThisApplication.TransientObjects.CreateObjectCollection
For Each oName In FeatureNames
Dim oFeat As PartFeature = Nothing
Try : oFeat = oFeatures.Item(oName) : Catch : Continue For : End Try
If IsNothing(oFeat) Then Continue For
If oFeat.Suppressed <> bSuppress Then oFeatsToProcess.Add(oFeat)
Next
If bSuppress = True Then
oPDef.SuppressFeatures(oFeatsToProcess)
Else
oPDef.UnsuppressFeatures(oFeatsToProcess)
End If
If oPDoc.RequiresUpdate Then oPDoc.Update2(True)
'If oPDoc.Dirty Then oPDoc.Save
End Sub
Wesley Crihfield

(Not an Autodesk Employee)