Multiple Spot Coordinates

Hi @quagliatol,

The Reference needs to be a geometric reference, which you need to get from the floor object. See below for a, quick and dirty, example for a single Floor object:

image

Python script:

import clr

#Import the Revit API
clr.AddReference('RevitAPI')
import Autodesk
from Autodesk.Revit.DB import *

#Import DocumentManager and TransactionManager
clr.AddReference('RevitServices')
import RevitServices
from RevitServices.Persistence import DocumentManager
from RevitServices.Transactions import TransactionManager

#Import ToDSType(bool) extensions method
clr.AddReference('RevitNodes')
import Revit
clr.ImportExtensions(Revit.Elements)
clr.ImportExtensions(Revit.GeometryConversion)

#Reference the active Document and application
doc = DocumentManager.Instance.CurrentDBDocument

#---###Start scripting here:###---#
floor = UnwrapElement(IN[0])
refPts = [i.ToXyz() for i in IN[1]]
view = doc.ActiveView

opts = Options()
opts.ComputeReferences = True

floorSolid = floor.get_Geometry(opts)
plFaces = [i.Faces for i in floorSolid][0]
upFace = None
for i in plFaces:
	normal = i.FaceNormal
	if normal.Z == 1:
		upFace = i

ref = upFace.Reference
		
#Transaction start:
TransactionManager.Instance.EnsureInTransaction(doc)
spotElev = []
for i in refPts:
	spotElev.append(doc.Create.NewSpotElevation(view, ref, i, i, i, i, False))
#Transaction end:
TransactionManager.Instance.TransactionTaskDone()

OUT = spotElev
1 Like