Проблема в том, что я хочу выбрать лучи, совпадающие друг с другом, одним щелчком мыши.У меня есть код, который проверяет, связаны ли они.Найдите код ниже
public bool ElementsConnect(Element firstelement, Element secondelement)
{
ElementGeometry geo= new ElementGeometry();
bool istrue ;
List<XYZ> firstendpoints = GetEndPoints(firstelement);
List<XYZ> secondendpoints = GetEndPoints(secondelement);
return istrue = firstendpoints.Any(firspoint => secondendpoints.Any
(secondpoint => secondpoint.X == firspoint.X && secondpoint.Y==firspoint.Y
&& secondpoint.Z==firspoint.Z));
}
Теперь мне нужен второй метод, чтобы рекурсивно циклически проходить по списку, чтобы найти другие, которые объединены, пока их нет.Вот где я не могу найти решение.Помощь будет принята с благодарностью.Позвольте мне добавить, что этот код никогда не выходит из цикла.
public List<Element> GetConnectedBeams(Element element, List<Element> elements)
{
List<Element> beams = new List<Element>();
for(int i=0; i < elements.Count(); i++)
{
if(ElementsConnect( element,elements[i]))
beams.Add(elements[i]);
}
List<Element> eles = null;
foreach (var beam in beams)
{
Element ele= elements.Find(x=> beams.Contains(x));
eles = elements.Where(x=> x!= ele).ToList();
beams= GetConnectedBeams(beam,eles) ;
}
return beams;
}