Win32 alternative Python

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
2 Likes