The way I've always limited what pages are included is through a definition query.
If you can't edit the original data, then you could make a copy of it. However, I'm not sure of all your requirements.
The script below will make a copy of the original area layer, and add a field called
DisplayPage. It then does a
SelectByLocation to select all the areas that contain an HVAC feature. After the selection it uses an
UpdateCursor to populate the
DisplayPage field with a
Yes for all the currently selected areas.
arcpy.env.overwriteOutput = True
#change paths to where your data is located
original_area = "C:\\temp\\Data.gdb\\Area"
hvac_features = "C:\\temp\\Data.gdb\\HVAC"
#change path to where you'd like the copy outputted
copy_area = "C:\\temp\\Data.gdb\\AreaCopy"
arcpy.AddField_management(copy_area, "DisplayPage", "TEXT")
copy_area_fl = arcpy.MakeFeatureLayer_management(copy_area, "copy_area_fl")
hvac_features_fl = arcpy.MakeFeatureLayer_management(hvac_features, "hvac_features_fl")
arcpy.SelectLayerByLocation_management(copy_area_fl, "CONTAINS", hvac_features_fl)
with arcpy.da.UpdateCursor(copy_area_fl, ("DisplayPage")) as cursor:
for row in cursor:
row = "Yes"
Then in ArcMap set a definition query on the copied area layer to
DisplayPage = 'Yes'. And use this layer as the index for the Data Driven Pages.