I noticed that it is possible to retrieve a Component2 and make it invalid.
I will shortly explain how I did it.
This is my assembly:
1. I retrieved all components via AssemblyDoc.GetComponents(false). This gave me two components: the top level component and its child component.
2. I replaced the top level component by a part file. Thus, after the replace, the top level component does not have a child any more.
I still have the child component, even though it has no counterpart in the feature tree any more. I call it "invalid" for the purpose of this question. (I don't know if this is the official nomenclature.)
My question is: How do I find out if a given Component2 is invalid?
I noticed that before replacing, the component in question had a Name2: "subLvlComp-1".
After replacing, its Name2 is "". So the Name2 is an indicator. But I don't know if this always works.
Does anyone have experience with this? Is there a method that was designed to return the validity state?
I attached the assembly and part files as well as a macro that does the component retrieving, replacing and writing the names to the console.
If you want to try, just open assembly.SLDASM and run the macro (with output console visible).