Hello everbody
I would like return which elements are from some surfaces. I use as a example this topic:
But, it’s just for one surface… I made something like that:
However, it’s return a error:

This a correct way for return all elements from surfaces or there other way?
Thanks
Hi @brenofilipe,
Looping to get the “i” in the range is not going to help you unless you use that “i” to retrieve the element from ref.
Try this:
import clr
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
uidoc = DocumentManager.Instance.CurrentUIApplication.ActiveUIDocument
clr.AddReference("RevitNodes")
import Revit
# Import ToProtoType, ToRevitType geometry conversion extension methods
clr.ImportExtensions(Revit.GeometryConversion)
TaskDialog.Show('Selection','Select the face(s)')
refs = uidoc.Selection.PickObjects(ObjectType.Face, 'Select the face(s)')
output = []
for ref in refs:
out = []
elemId = ref.ElementId
element = doc.GetElement(ref.ElementId)
dynSurface = doc.GetElement(ref).GetGeometryObjectFromReference(ref).ToProtoType()
out.append(elemId)
out.append(element)
out.append(dynSurface)
output.append(out)
OUT = output
2 Likes
This is exacly that I needed.
Thank you very much @AmolShah !
1 Like