public static bool TryGetAdaptiveComponentPoint3Ds(this FamilyInstance familyInstance, out List <Point3D> point3Ds, out List <Point3D> point3Ds_Placement, out List <Point3D> point3Ds_ShapeHandle) { point3Ds = null; point3Ds_Placement = null; point3Ds_ShapeHandle = null; if (familyInstance == null) { return(false); } if (!AdaptiveComponentInstanceUtils.IsAdaptiveComponentInstance(familyInstance)) { return(false); } Document document = familyInstance.Document; IList <ElementId> elementIds = null; elementIds = AdaptiveComponentInstanceUtils.GetInstancePointElementRefIds(familyInstance); if (elementIds != null) { point3Ds = new List <Point3D>(); foreach (ElementId elementId in elementIds) { ReferencePoint referencePoint = document.GetElement(elementId) as ReferencePoint; if (referencePoint == null || referencePoint.Position == null) { continue; } point3Ds.Add(referencePoint.Position.ToSAM()); } } elementIds = AdaptiveComponentInstanceUtils.GetInstancePlacementPointElementRefIds(familyInstance); if (elementIds != null) { point3Ds_Placement = new List <Point3D>(); foreach (ElementId elementId in elementIds) { ReferencePoint referencePoint = document.GetElement(elementId) as ReferencePoint; if (referencePoint == null || referencePoint.Position == null) { continue; } point3Ds_Placement.Add(referencePoint.Position.ToSAM()); } } elementIds = AdaptiveComponentInstanceUtils.GetInstanceShapeHandlePointElementRefIds(familyInstance); if (elementIds != null) { point3Ds_ShapeHandle = new List <Point3D>(); foreach (ElementId elementId in elementIds) { ReferencePoint referencePoint = document.GetElement(elementId) as ReferencePoint; if (referencePoint == null || referencePoint.Position == null) { continue; } point3Ds_ShapeHandle.Add(referencePoint.Position.ToSAM()); } } return(true); }