Hi @3d_low ,
I made a script to delete components by name.
This is the script:
app = adsk.core.Application.get()
des = adsk.fusion.Design.cast(app.activeProduct)
def remove_components_parametrically():
try:
REMOVE_PARAMETER = 'remove_components'
app.log(f'----------------------------------------')
remove_parameter = des.userParameters.itemByName(REMOVE_PARAMETER)
if remove_parameter:
comp_names = remove_parameter.comment.split(',')
app.log(f'Components to delete: {comp_names}')
comp_stack = [des.rootComponent]
while len(comp_stack):
comp = comp_stack.pop()
for occ in comp.allOccurrences:
if occ.component:
if occ.component.name in comp_names:
app.log(f'"{occ.component.name}" deleted')
occ.deleteMe()
else:
comp_stack.append(occ.component)
else:
app.log(f'"{REMOVE_PARAMETER}" user parameter not found')
except:
app.log(f'{traceback.format_exc()}')
This how it works:
1. Define a user parameter with name "remove_components" with any value, and use its description to add the components names to be deleted separated by comma (whitout spaces):

I added "sphere,box" in my test.
2. Run the script, calling the function remove_components_parametrically()
All components at any level whose names are in the parameter description will be deleted.
This is the model I used:

And this is the result:

Two spheres and a box were deleted.
Let me know if this is what you're looking for.
Regards,
Jorge