Hello,
my script worked well … how to merge all steps? in Python
HasCalculationPoint → RoomAtPoint → Roomname ?
…does this work for any Point ?
HasRoom.dyn (20.6 KB)
import clr
clr.AddReference('RevitAPI')
from Autodesk.Revit.DB import *
from Autodesk.Revit.DB.Structure import *
clr.AddReference('RevitAPIUI')
from Autodesk.Revit.UI import *
clr.AddReference('System')
from System.Collections.Generic import List
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
uidoc=DocumentManager.Instance.CurrentUIApplication.ActiveUIDocument
def toList(x):
if hasattr(x,"__iter__"): return x
else: return [x]
elements = UnwrapElement(toList(IN[0]))
output = []
for i in elements:
output.append(i.HasSpatialElementCalculationPoint)
OUT = output
import clr
clr.AddReference('RevitAPI')
from Autodesk.Revit.DB import *
clr.AddReference("RevitNodes")
import Revit
clr.ImportExtensions(Revit.Elements)
clr.ImportExtensions(Revit.GeometryConversion)
def GetLocation(item):
# if it has a calculation point return that
if item.HasSpatialElementCalculationPoint : return item.GetSpatialElementCalculationPoint().ToPoint()
# if not return the regular location
elif item.Location.GetType().ToString().Contains("LocationPoint") : return item.Location.Point.ToPoint()
else: return None
items = UnwrapElement(IN[0])
if isinstance(IN[0], list): OUT = [GetLocation(x) for x in items]
else: OUT = GetLocation(items)
import clr
clr.AddReference('RevitAPI')
from Autodesk.Revit.DB import *
from Autodesk.Revit.DB.Structure import *
clr.AddReference('RevitAPIUI')
from Autodesk.Revit.UI import *
clr.AddReference('System')
from System.Collections.Generic import List
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
uidoc=DocumentManager.Instance.CurrentUIApplication.ActiveUIDocument
points = IN[0]
output = []
for i in points:
if doc.GetRoomAtPoint(i.ToXyz()) == None:
output.append("No Room")
else:
output.append(doc.GetRoomAtPoint(i.ToXyz()))
OUT = output
KR
Andreas