I wrote a blog post a few weeks back, talking about Suppressing/Unsuppressing & deleting iLogic rules, and I got asked on Reddit if this could be applied to Assemblies and Components too.
The short answer was yes, the tricky part was including some code to handle custom Levels of detail, which I’ve done in the code below (look under suppress:)
Here is an animated GIF of the iLogic code in action:

As this code allows users to DELETE components, please proceed with extreme caution!
Here is the iLogic code:
'iLogic Code by @ClintBrown3D 'Originally posted at https://clintbrown.co.uk/ilogic-suppress-unsuppress-and-delete-parts Dim ClintBrown3D As New ArrayList 'Iterate Through the Assembly Dim oDoc As Inventor.AssemblyDocument oDoc = ThisApplication.ActiveDocument Dim oCompDef As Inventor.ComponentDefinition oCompDef = oDoc.ComponentDefinition Dim oCompOcc As ComponentOccurrence For Each oCompOcc In oCompDef.Occurrences Next d0 = InputListBox("What would you like to do?", {"Suppress Component","Unsuppress Component", "Delete Component"}, d0, Title := "@ClintBrown3D", ListName := "This Utility lets you Suppress/Unsuppress/Delete Components") If d0 = "Suppress Component" Then : GoTo Suppress : End If If d0 = "Unsuppress Component" Then : GoTo Unsuppress : End If If d0 = "Delete Component" Then : GoTo Delete : End If If d0 = "" Then : GoTo ClintsErrorTrap : End If Suppress : For Each oCompOcc In oCompDef.Occurrences ClintBrown3D.Add(oCompOcc.Name) Next iLogicRules = InputListBox("Select A Component to suppress" , ClintBrown3D, d0, Title := "@ClintBrown3D: Suppress a Component", ListName := "Below is a list of Components in this Assembly") 'Create and Set Custom LOD" Dim doc As AssemblyDocument = ThisDoc.Document Dim oLOD As LevelOfDetailRepresentation Dim oAsmCompDef As ComponentDefinition oAsmCompDef = doc.ComponentDefinition Try oLOD = oAsmCompDef.RepresentationsManager.LevelOfDetailRepresentations.Add("iLogic") Catch oLOD = oAsmCompDef.RepresentationsManager.LevelOfDetailRepresentations.Item("iLogic") oLOD.Activate(True) End Try Component.IsActive(iLogicRules) = False Return Unsuppress : For Each oCompOcc In oCompDef.Occurrences ClintBrown3D.Add(oCompOcc.Name) Next iLogicRules1 = InputListBox("Select A Component to Unsuppress" , ClintBrown3D, d0, Title := "@ClintBrown3D", ListName := "Below is a list of Components in this Assembly") Component.IsActive(iLogicRules1) = True Return Delete : For Each oCompOcc In oCompDef.Occurrences ClintBrown3D.Add(oCompOcc.Name) Next iLogicRules2 = InputListBox("Select A Component to Delete", ClintBrown3D, d0, Title := "@ClintBrown3D: Delete a Rule", ListName := "Below is a list of Components in this Assembly") i = MessageBox.Show("Are you sure that you want to permanently Delete **" & iLogicRules2 & " **", "DELETE " & iLogicRules2 ,MessageBoxButtons.YesNo) If i = vbYes Then : GoTo ClintBrown1 : Else : GoTo ClintsErrorTrap : End If ClintBrown1 : Components.Delete(iLogicRules2) MessageBox.Show(iLogicRules2 & " Successfully Deleted" & vbNewLine & vbNewLine & "Hitting Undo may restore the Component", "@ClintBrown3D") Return ClintsErrorTrap :
This version of the code was briefly tested with Inventor 2020.
Please note that I cannot offer any additional support, this blog post is offered as-is, and is aimed at the more advanced user.
As always, please test all iLogic code extensively on non-production files. Do not use any code in a production environment until YOU have thoroughly tested it and have verified that it works as expected. Always back up any data before running any experimental code. You are ultimately responsible for any iLogic code that you run, so make sure you test it thoroughly!
This site takes absolutely no responsibility for how you use this code in production (see disclaimer).