Get Face from CAD/dwg

Try this:

import clr

clr.AddReference('ProtoGeometry')
from Autodesk.DesignScript.Geometry import *
import Autodesk.DesignScript.Geometry as DS

clr.AddReference('RevitAPI')
import Autodesk
from Autodesk.Revit.DB import *
import Autodesk.Revit.DB as DB

clr.AddReference('RevitNodes')
import Revit
clr.ImportExtensions(Revit.GeometryConversion)
clr.ImportExtensions(Revit.Elements)

clr.AddReference("RevitServices")
import RevitServices
from RevitServices.Persistence import DocumentManager
from RevitServices.Transactions import TransactionManager

doc = DocumentManager.Instance.CurrentDBDocument
importinstance = UnwrapElement(IN[0])
out = []
opt = Options()
geoSet = importinstance.get_Geometry(opt)
for geo in geoSet:
	if isinstance(geo, GeometryInstance):
		for g in  geo.GetInstanceGeometry():
			if isinstance(g, Solid):
				for f in g.Faces:
					if doc.GetElement(f.GraphicsStyleId).GraphicsStyleCategory.Name == IN[1]:
						for loopCurve in f.GetEdgesAsCurveLoops():
							ds_polycurv = DS.PolyCurve.ByJoinedCurves(x.ToProtoType() for x in loopCurve)
							out.append(ds_polycurv)
OUT = out
2 Likes