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).
SolidworksApi macros