-                 public void CalcSubArea() 
-                 { 
-                         var doc = Document; 
-                          
-                         var selectedRooms = Selection 
-                                                 .GetElementIds() 
-                                                 .OfType<ElementId>() 
-                                                 .Select(x=>doc.GetElement(x)) 
-                                                 .OfType<Room>() 
-                                                 .ToList(); 
-                                          
-                                                  
-                         List<Room> rooms; 
-                                          
-                         if (selectedRooms.Count ==0) 
-                         { 
-                          
-                                 rooms = new FilteredElementCollector(doc) 
-                                 .WherePasses(new RoomFilter()) 
-                                         .OfType<Room>() 
-                                 .ToList(); 
-                         } 
-                         else 
-                         { 
-                                 rooms = selectedRooms; 
-                         } 
-                          
-                         using (var t = new Transaction(doc, "Create Room Solids")) 
-                         { 
-                                 t.Start(); 
-                                  
-                                 SpatialElementGeometryCalculator calculator = new SpatialElementGeometryCalculator(doc); 
-                                  
-                                 foreach (Room room in rooms)  
-                                 { 
-                                         SpatialElementGeometryResults results ; 
-                                          
-                                         results = calculator.CalculateSpatialElementGeometry(room); 
-                                          
-                                          
-                                         var roomSolid = results.GetGeometry(); 
-                                          
-                                         foreach (Face face in roomSolid.Faces)  
-                                         { 
-                                                 var subfaces = results.GetBoundaryFaceInfo(face); 
-                                                  
-                                                 foreach (var subface in subfaces)  
-                                                 { 
-                                                         var elementId = subface.SpatialBoundaryElement.HostElementId; 
-                                                          
-                                                         //wall with opening 
-                                                         if (elementId.IntegerValue == 304732) 
-                                                         { 
-                                                                 TaskDialog.Show("Area", subface.GetSubface().Area.ToString()); 
-                                                         } 
-                                                 } 
-                                         } 
-                                 } 
-                                  
-                                 t.Commit(); 
-                         } 
-                 }