Hi All,

I was wondering if anybody knew - the GetEndPoint method for the curve class gets the coordinate value based on which point (the survey point or the internal origin)

Appreciate all inputs here

Thanks

Hi All,

I was wondering if anybody knew - the GetEndPoint method for the curve class gets the coordinate value based on which point (the survey point or the internal origin)

Appreciate all inputs here

Thanks

Hi @adikshit ,

I donβt think there is a direct method to get the world-coordinates of a point, since everything within the Revit project is translated according to the Project Base Point.

You could however extract the xyz-values from your points and the xyz-values of your Project Base Point. Then add them together to get the world-coordinates of those points.

Hello @adikshit and welcome

the `GetEndPoint`

method return point from internal origin coordinate

here an example to return point from different system coordinates

```
import clr
import sys
import System
clr.AddReference('ProtoGeometry')
from Autodesk.DesignScript.Geometry import *
import Autodesk.DesignScript.Geometry as DS
clr.AddReference('RevitAPI')
import Autodesk
from Autodesk.Revit.DB import *
import Autodesk.Revit.DB as DB
clr.AddReference('RevitServices')
import RevitServices
from RevitServices.Persistence import DocumentManager
from RevitServices.Transactions import TransactionManager
doc = DocumentManager.Instance.CurrentDBDocument
class OriginEnum:
Internal = 1
Survey = 2
BaseProject = 3
def get_end_point(curve, index, originEnum):
"""
originEnum -> OriginEnum.Internal OR OriginEnum.Survey OR OriginEnum.BaseProject
"""
pt = curve.GetEndPoint(index)
if originEnum == OriginEnum.Survey:
translatedpointA = doc.ActiveProjectLocation.GetTotalTransform().Inverse.OfPoint(pt)
return translatedpointA
elif originEnum == OriginEnum.BaseProject:
projectPoint = FilteredElementCollector(doc).OfCategory(BuiltInCategory.OST_ProjectBasePoint).FirstElement()
projectXyz = projectPoint.get_BoundingBox(None).Min
return pt.Subtract(projectXyz)
else:
return pt
toList = lambda x : x if hasattr(x, '__iter__') else [x]
#Preparing input from dynamo to revit
lstCurves = toList(UnwrapElement(IN[0]))
pts_survey = [get_end_point(c.Location.Curve, 1, OriginEnum.Survey) for c in lstCurves]
pts_Project = [get_end_point(c.Location.Curve, 1, OriginEnum.BaseProject) for c in lstCurves]
OUT = pts_survey, pts_Project
```

3 Likes

haha - you solved it all for me Thanks Cyril

1 Like