private static int[, ,] _record = new int[4, 2, _numLevel]; //Global Recorder : [X1/X2/Y1/Y2,W27/W30,levels] private static void GetIntersectBeams() { FilteredElementCollector tempCollector = new FilteredElementCollector(_doc); ElementStructuralTypeFilter BeamFilter = new ElementStructuralTypeFilter(StructuralType.Beam); _intersectedBeams.Clear(); //Do not consider lower beams XYZ left = new XYZ(_columnBox.Min.X - ErrorCTRL_BoundingBox, _columnBox.Min.Y - ErrorCTRL_BoundingBox, 0.5 * (_myLevel.GetElevation(_bottom_floor) + _myLevel.GetElevation(_bottom_floor + 1))); XYZ right = new XYZ(_columnBox.Max.X + ErrorCTRL_BoundingBox, _columnBox.Max.Y + ErrorCTRL_BoundingBox, _columnBox.Max.Z + ErrorCTRL_BoundingBox); Outline outline = new Outline(left, right); BoundingBoxIntersectsFilter bbfilter = new BoundingBoxIntersectsFilter(outline); tempCollector.WherePasses(bbfilter).WherePasses(BeamFilter); foreach (FamilyInstance beam in tempCollector) { if (beam.StructuralMaterialType == StructuralMaterialType.Steel) { _intersectedBeams.Add(beam); } else { _abandonWriter.WriteAbandonment(beam, AbandonmentTable.SteelJoint_BeamNotSteel); } } }
private static void ExtractObjects() { FilteredElementCollector ColumnCollector = new FilteredElementCollector(_doc); ElementStructuralTypeFilter StruColumnFilter = new ElementStructuralTypeFilter(StructuralType.Column); IList <ElementFilter> StruMaterialFilterList = new List <ElementFilter>(); StruMaterialFilterList.Add(new StructuralMaterialTypeFilter(StructuralMaterialType.Concrete)); StruMaterialFilterList.Add(new StructuralMaterialTypeFilter(StructuralMaterialType.PrecastConcrete)); LogicalOrFilter StruMaterialFilter = new LogicalOrFilter(StruMaterialFilterList); _StruColumns = ColumnCollector.WherePasses(StruColumnFilter).WherePasses(StruMaterialFilter).ToList(); }