Its looking good
you might find the following python interesting, I cant remeber where I got it from, which is really bugging me as I usually keep a good note of where things are from, but its probably from this forum, from one of the many good people sharing their efforts
import clr
import math
# import Document Manager
clr.AddReference("RevitServices")
import RevitServices
from RevitServices.Persistence import DocumentManager
doc = DocumentManager.Instance.CurrentDBDocument
clr.AddReference("RevitNodes")
import Revit
clr.ImportExtensions(Revit.Elements)
clr.ImportExtensions(Revit.GeometryConversion)
clr.AddReference("RevitAPI")
from Autodesk.Revit.DB import *
dataEnteringNode = IN
outData = []
outProjBasePt = []
outProjSurvPt = []
outProjLoc = []
ft2mm = 304.8
coll = FilteredElementCollector(doc)
basePt = coll.OfClass(BasePoint).ToElements()
projBasePt = None
for e in basePt:
a = e.Category.Name
if a == "Project Base Point":
pbpEW = e.LookupParameter("E/W")
pbpNS = e.LookupParameter("N/S")
pbpElev = e.LookupParameter("Elev")
pbpAngle = e.LookupParameter("Angle to True North")
outProjBasePt.append(round(pbpEW.AsDouble()*ft2mm,6))
outProjBasePt.append(round(pbpNS.AsDouble()*ft2mm,6))
outProjBasePt.append(round(pbpElev.AsDouble()*ft2mm,6))
outProjBasePt.append(round(pbpAngle.AsDouble()*180/math.pi,6))
elif a == "Survey Point":
pspEW = e.LookupParameter("E/W")
pspNS = e.LookupParameter("N/S")
pspElev = e.LookupParameter("Elev")
outProjSurvPt.append(round(pspEW.AsDouble()*ft2mm,6))
outProjSurvPt.append(round(pspNS.AsDouble()*ft2mm,6))
outProjSurvPt.append(round(pspElev.AsDouble()*ft2mm,6))
projLoc = doc.ActiveProjectLocation
origin = XYZ(0.0,0.0,0.0)
projPos = projLoc.get_ProjectPosition(origin)
if projPos == None:
outProjLoc.append("No Project Position at origin point")
else:
outProjLoc.append(round(projPos.EastWest * ft2mm,6))
outProjLoc.append(round(projPos.NorthSouth * ft2mm,6))
OUT = [outProjLoc, outProjBasePt, outProjSurvPt]