Message 1 of 12
Not applicable
09-26-2017
03:54 AM
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report
Hi,
The following code works doesn't works for walls but not for pipes and ducts:
public Dictionary<Reference, XYZ> GetIntersectPoints(
Document doc,
XYZ ff,XYZ ff1)
{
// Find a 3D view to use for the
// ReferenceIntersector constructor.
FilteredElementCollector collector
= new FilteredElementCollector(doc);
Func<View3D, bool> isNotTemplate = v3
=> !(v3.IsTemplate);
View3D view3D = collector
.OfClass(typeof(View3D))
.Cast<View3D>()
.First<View3D>(isNotTemplate);
// Use location point as start point for intersector.
XYZ startPoint = ff;
XYZ endPoint = ff1;
// Shoot intersector along element.
XYZ rayDirection = endPoint.Subtract(
startPoint).Normalize();
List<BuiltInCategory> builtInCats
= new List<BuiltInCategory>();
builtInCats.Add(BuiltInCategory.OST_Walls);
builtInCats.Add(BuiltInCategory.OST_PipeCurves);
builtInCats.Add(BuiltInCategory.OST_DuctSystem);
ElementClassFilter filter = new ElementClassFilter(typeof(PipeSegment));
ElementMulticategoryFilter intersectFilter
= new ElementMulticategoryFilter(builtInCats);
ReferenceIntersector refIntersector = new ReferenceIntersector(intersectFilter, FindReferenceTarget.Element, view3D);
//ReferenceIntersector refIntersector = new ReferenceIntersector(view3D);
//refIntersector.TargetType = FindReferenceTarget.Face;
//ReferenceIntersector refIntersector = new ReferenceIntersector(filter, FindReferenceTarget.Element, doc.ActiveView);
refIntersector.FindReferencesInRevitLinks = true;
IList<ReferenceWithContext> referencesWithContext
= refIntersector.Find(startPoint,
rayDirection);
IList<XYZ> intersectPoints = new List<XYZ>();
IList<Reference> intersectRefs
= new List<Reference>();
Dictionary<Reference, XYZ> dictProvisionForVoidRefs
= new Dictionary<Reference, XYZ>();
foreach (ReferenceWithContext r in
referencesWithContext)
{
TaskDialog.Show("iipl", doc.GetElement(r.GetReference().ElementId).Name);
dictProvisionForVoidRefs.Add(r.GetReference(),
r.GetReference().GlobalPoint);
}
return dictProvisionForVoidRefs;
}
Thanks & Regards
Sanjay Pandey
Solved! Go to Solution.