hello
an other way to export/write warnings to html file with GetWarnings() method
import clr
import datetime
clr.AddReference('RevitAPI')
import Autodesk
from Autodesk.Revit.DB import *
clr.AddReference('RevitServices')
import RevitServices
from RevitServices.Persistence import DocumentManager
doc = DocumentManager.Instance.CurrentDBDocument
import System
from System.IO import Directory, SearchOption
datenow = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')
exportfolder = System.Environment.GetFolderPath(System.Environment.SpecialFolder.MyDocuments)
reporthtmlfile = exportfolder + "\\report_"+ datenow.replace(':','_') + ".html"
warnings = doc.GetWarnings()
htmllst = []
htmllst.append("<html><p><center><h1> Error Report {} {} </h1></center></p>".format(doc.Title, datenow ))
htmllst.append("<p><table border=on> <th style='width:'50%'; vertical-align:top;'> <center> Errors </center> </th>")
htmllst.append("<th style='width:'50%'; vertical-align:top;'><center> Elements </center> </th>")
for warn in warnings:
descript = warn.GetDescriptionText()
htmllst.append("<tr> <td style='vertical-align:top;'> {} </td>".format(descript))
htmllst.append("<td>")
for elemId in warn.GetFailingElements():
elem = doc.GetElement(elemId)
elemType = doc.GetElement(elem.GetTypeId())
try:
if doc.IsWorkshared:
wks = doc.GetElement(ElementId(elem.WorksetId.IntegerValue))
wksName = wks.Name
else:
wksName = ""
if elemType is not None:
htmllst.append("{} : {} : {} : {} : ID {}".format(wksName, elem.Category.Name, elemType.FamilyName, elem.Name, str(elemId)))
else:
htmllst.append("{} : {} : {} : ID {}".format(wksName, elem.Category.Name, elem.Name, str(elemId)))
except:
htmllst.append("{} : ID {}".format(elem.Category.Name, str(elemId)))
htmllst.append("<br>")
htmllst.append("</td> </tr>")
htmllst.append( "</table> </html>")
with open(reporthtmlfile, 'wb') as f:
f.writelines(htmllst)
OUT = exportfolder, warnings, reporthtmlfile