//--------------------------------------- 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); }
//--------------------------------------- protected void FillListeFilsPourElementsACoordonnées(List <IComposantPourObjetACoordonnées> lst, string strPrefixe) { foreach (C2iComposant3D fils in Childs) { IComposantPourObjetACoordonnées cp = fils as IComposantPourObjetACoordonnées; if (cp != null && (cp.PrefixesCoordonneeAssocies.Count() == 0 || cp.PrefixesCoordonneeAssocies.Contains(strPrefixe))) { lst.Add(cp); } fils.FillListeFilsPourElementsACoordonnées(lst, strPrefixe); } }