/// <summary> /// get all the rooms and room tags in the project /// </summary> private void GetAllRoomsAndTags() { // get the active document Document document = m_revit.ActiveUIDocument.Document; RoomFilter roomFilter = new RoomFilter(); RoomTagFilter roomTagFilter = new RoomTagFilter(); LogicalOrFilter orFilter = new LogicalOrFilter(roomFilter, roomTagFilter); FilteredElementIterator elementIterator = (new FilteredElementCollector(document)).WherePasses(orFilter).GetElementIterator(); elementIterator.Reset(); // try to find all the rooms and room tags in the project and add to the list while (elementIterator.MoveNext()) { object obj = elementIterator.Current; // find the rooms, skip those rooms which don't locate at Level yet. Room tmpRoom = obj as Room; if (null != tmpRoom && null != tmpRoom.Level) { m_rooms.Add(tmpRoom); continue; } // find the room tags RoomTag tmpTag = obj as RoomTag; if (null != tmpTag) { m_roomTags.Add(tmpTag); continue; } } }
/// <summary> ///constructor /// </summary> public RoomsData(ThisDocument hostAddIn, Autodesk.Revit.ApplicationServices.Application application) { m_application = application; m_thisDocument = hostAddIn; RoomFilter roomFilter = new RoomFilter(); RoomTagFilter roomTagFilter = new RoomTagFilter(); LogicalOrFilter orFilter = new LogicalOrFilter(roomFilter, roomTagFilter); FilteredElementIterator elementIterator = (new FilteredElementCollector(m_thisDocument.Document)).WherePasses(orFilter).GetElementIterator(); elementIterator.Reset(); // try to find all the rooms and room tags in the project and add to the list while (elementIterator.MoveNext()) { object obj = elementIterator.Current; // find the rooms, skip those rooms which don't locate at Level yet. Room tmpRoom = obj as Room; if (null != tmpRoom && null != tmpRoom.Level) { m_rooms.Add(tmpRoom); continue; } // find the room tags RoomTag tmpTag = obj as RoomTag; if (null != tmpTag) { m_roomTags.Add(tmpTag); continue; } } //find out the rooms that without tag ClassifyRooms(); }