// трубы
var pipes = new FilteredElementCollector(_mainDoc)
.WherePasses(new ElementMulticategoryFilter(pipeCategories.Select(x => x.Type()).ToArray()))
.WhereElementIsNotElementType()
.ToElements();
// стены из линка
var walls = new FilteredElementCollector(_secondDoc.Document)
.WherePasses(new ElementMulticategoryFilter(wallCategories.Select(x => x.Type()).ToArray()))
.WhereElementIsNotElementType()
.ToElementIds();
var filter = new ElementClassFilter(typeof(Wall));
var view = _mainDoc.ActiveView as View3D;
var refIntersector = new ReferenceIntersector(filter, FindReferenceTarget.All, view); -- не работает
var refIntersector = new ReferenceIntersector(walls, FindReferenceTarget.All, view); -- не работает
var refIntersector = new ReferenceIntersector(view) -- выдает одно пересечение
refIntersector.FindReferencesInRevitLinks = true;
pipes.ForEach(pipe =>
{
var line = (pipe.Location as LocationCurve).Curve as Line;
var intrs = refIntersector.Find(line.Origin, line.Direction);
foreach (var referenceWithContext in intrs)
{
Reference reference = referenceWithContext.GetReference(); // сюда попадаем только один раз
}
});