Face ID number

Hi, here is an all-in-one answer, very inspired by Mr. Poupin’s code from the following message:

Script
import sys
import clr
#Very inspired by Mr. Poupin's code from the following message
#https://forum.dynamobim.com/t/get-element-from-faces/56495/10

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

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

clr.AddReference('RevitAPIUI')
from Autodesk.Revit.UI import *
from Autodesk.Revit.UI.Selection import *

clr.AddReference('RevitServices')
import RevitServices
from RevitServices.Persistence import DocumentManager

doc = DocumentManager.Instance.CurrentDBDocument
uiapp = DocumentManager.Instance.CurrentUIApplication
uidoc = uiapp.ActiveUIDocument

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

commutateur=IN[0]

if commutateur:
    TaskDialog.Show("Select one Face on Revit", "Select the Face on Revit")
    ref = uidoc.Selection.PickObject(ObjectType.Face, "select the Face")
    elt = doc.GetElement(ref)
    face = elt.GetGeometryObjectFromReference(ref)
    surface_dynamo = face.ToProtoType()
    out={"Surface_Dynamo":surface_dynamo[0],"NumId":elt.Id.IntegerValue}
else:
    out="Wait true on commutateur"

OUT = out

Sincerely
christian.stan

5 Likes