If GenerateNames is true then a MNName willbe generated if the parent is set to a component with has no name. With GenerateNames is guarantized, the every member of a tree ( except the root ) has a unique name and there is a fullpath, with that the element can be identified.
Base is an other aspect of Transformation. She is given from Transformation by the conversion with toBase For something it is better to work with a base as a transformation. Also it is easier to imagine a base. All coordinates, used in the drawmethod of the entity are taken relative to this base.
You can get a MNComponent by setting a fullpath relative to the given MNComponent. Separated are the names by "/".
MNComponent root = new MNComponent();
MNComponent a = new MNComponent();
MNComponent b = new MNComponent();
MNComponent c = new MNComponent();
a.MNName = "Frank";
b.MNName = "Joe";
c.MNName = "Sam";
c.Parent = b;
b.Parent = a;
a.Parent = root;
MNComponent d = root.ChildByPathName("Frank/Joe/Sam");
// d is then the component c
Gives the full path of the component over all ancestors until a null-parent occurs. This parent often called the root. The separator of the names is "/".
From the Paint-method a 'draw' is called. It is better to override drawmetod than the Paintmethod, because in the Paintmethod some calls enclose the drawmethod ( for example the transformation will be setted ).