How accurate do you need the conversion to be?
import clr
from math import cos, sin
clr.AddReference("RevitServices")
from RevitServices.Persistence import DocumentManager
clr.AddReference("RevitAPI")
from Autodesk.Revit.DB import *
doc = DocumentManager.Instance.CurrentDBDocument
def ll2cc(lat, lon, deg=True):
def rad(d):
return UnitUtils.Convert(d, UnitTypeId.Degrees, UnitTypeId.Radians)
R = 63710088 # Arithmetic mean radius of Earth in meters
if deg:
lat, lon = rad(lat), rad(lon)
return XYZ(R * cos(lat) * cos(lon), R * cos(lat) * sin(lon), 0)
loc = doc.SiteLocation # Site Location
lat = loc.Latitude
lon = loc.Longitude
# Translate site location lat, lon to 0, 0
translation = XYZ.Zero.Subtract(ll2cc(lat, lon, False))
transform = Transform.CreateTranslation(translation)
latlons = IN[0] # List of lat lon pairs in degrees
OUT = [transform.OfPoint(ll2cc(*ll)) for ll in latlons]