Plus précisément, comment puis-je déterminer si un solide intersecte un autre élément? J'ai examiné l'API Revit et je n'ai trouvé aucune information à ce sujet.Dans Revit, comment détecter les interférences par programmation?
0
A
Répondre
0
un coup d'oeil dans l'API de projection de rayons, vous pouvez tirer un rayon dans une certaine direction et elle retournera tous les éléments qu'elle frappe et leur emplacement, etc. méthode
FindReferencesByDirection Je crois est la méthode qui fait que .
0
Dans Revit 2012, utilisez ElementIntersectsSolidFilter lors du filtrage des éléments. Vous fournissez l'entrée Solid qui peut provenir d'un autre élément ou de la géométrie que vous générez par programmation.
0
si vous cherchez des éléments coupés, je vais utiliser BoundingBoxIntersectsFilter, il est filtre rapide avec un impact mineur performance
d'abord, obtenir la géométrie BoîteDeContour
GeometryElement geoElem = wall.get_Geometry(_geoOpt) as GeometryElement;
BoundingBoxXYZ boundXYZ = geoElem.GetBoundingBox();
puis, créez le contour et passé à BoundingBoxIntersectsFilter
if (boundXYZ != null)
{
outline = new Outline(boundXYZ.Min, boundXYZ.Max);
boundingFilter = new BoundingBoxIntersectsFilter(outline);
var filterElems = new FilteredElementCollector(elem.Document).WherePasses(boundingFilter).ToElementIds();
foreach (var item in filterElems)
{
//retrieve intersected elements
}
}
merci, c'est la seule façon de le faire. quelle horrible façon! – learner