If you check the help file for "basepart", the inheritance hierarchy shows that "part" and "CAEpart" inherit from "basepart". In programmer lingo, the base part is the parent class (or super class); part and caepart are child classes (or sub classes). What this means is the basepart class defines all the properties and methods common to all part classes. Part and CAEpart extend basepart to add their own unique properties and methods.
For example, the .Expressions collection is defined in the basepart class so no matter what type of part you have a reference for, you can access the Expressions collection. However, you can only access the .Bodies collection if you have a reference to a "part" (not basepart or CAEpart). Similarly, you can only access the .CAEGroups if you have a reference to a CAEpart variable.
A component is an instance of a part in the context of an assembly. Let's say you have an assembly of a car. You would make one "wheel" model then add it to your car assembly four times. Each component is an instance of the wheel model. The assembly treats each instance individually; you can orient each instance independently, rename each instance, assign unique attributes to each instance, etc etc.
Every part has a .ComponentAssembly property (inherited from the basepart class definition) to manage its components.
Going back to the car assembly example, let's say you select a face on the right front wheel; you have selected an instance of the original wheel face. You can use faceRef.Prototype to get access to the face defined in the wheel part (the parent face of the instances). You can use the .IsOccurrence property to determine if you have a reference to an instance (occurrence) or not.
The SNAP getting started guide has the latest graphical representation and explanation for assembly relations.
SNAP is an extension to NXOpen .NET, so many explanations are useful for regular NXOpen programming too.
Production: NX10.0.3, VERICUT 8.0, FBM, MRL 3.1.4 | TcUA 10.1 MP7 Patch 0 (10.1.7.0) | TcVis 10.1
Development: VB.NET, Tcl/Tk Testing: NX12.0
How to Get the Most from Your Signature in the Community
And, if you're new to NX programming, it might be useful to browse through the rest of the "Getting Started with SNAP" guide, too, in addition to reading the Assemblies chapter.