Example #1
0
        //---------------------------------------
        private bool PlaceFilsACoordonnées(IObjetACoordonnees fils, CNiveauCoordonnee[] niveaux)
        {
            if (niveaux == null || niveaux.Length == 0)
            {
                return(false);
            }
            C2iComposant3D composant = fils.GetComposantPhysique();

            if (composant == null)
            {
                return(false);
            }
            IEnumerable <IComposantPourObjetACoordonnées> lstPossibles = GetTousLesFilsPourElementsACoordonnées(niveaux[0].Prefixe);

            if (lstPossibles.Count() > 0)
            {
                IComposantPourObjetACoordonnées composantParent = lstPossibles.ElementAt(0);
                if (niveaux.Length == 1)
                {
                    return(composantParent.AddFilsWithIndex(composant, niveaux[0].Index));
                }
                else
                {
                    List <CNiveauCoordonnee> lst = new List <CNiveauCoordonnee>(niveaux);
                    lst.RemoveAt(0);
                    return(composant.PlaceFilsACoordonnées(fils, lst.ToArray()));
                }
            }
            return(false);
        }