Select SPECIFIC point on face

Morning All!

I’ve created a graph which adds families to a 3D face.

To run this I use the ‘Select Point on Face’ node which I then use to work out a workplane for the face.

The issue is that I need to set things out on the face exactly, and so want to select a specific point on the face, not an arbitrary one. the Select Point on Face node does not allow the use of any snaps.

I’ve drawn some 3D lines on the face in Revit, I’d like to use the end points of the lines as the points which the user would select.

Is there a ‘Select SPECIFIC point on face’ node or something similar?

Thanks.

Hi,

There should be a way to do this as a single step process (que some power users here ? @Kulkul ) but here is the two step.

  1. “Pick” the Face to be the current workplane in Revit.

  2. Use this python to pick a point.

import clr
clr.AddReference(‘ProtoGeometry’)
from Autodesk.DesignScript.Geometry import *

clr.AddReference(‘RevitAPIUI’)
from Autodesk.Revit.UI import TaskDialog

clr.AddReference(‘RevitAPI’)
from Autodesk.Revit.DB.Events import *

clr.AddReference(“RevitServices”)
import RevitServices
from RevitServices.Persistence import DocumentManager
doc = DocumentManager.Instance.CurrentDBDocument
uidoc = DocumentManager.Instance.CurrentUIApplication.ActiveUIDocument
if IN[2]:
_ TaskDialog.Show(“User Input”,IN[0])_
pt=uidoc.Selection.PickPoint(IN[1])
if pt != None:
_ dy=Point.ByCoordinates(pt.X304.8,pt.Y304.8,pt.Z*304.8)_
_ rtn=[pt, dy]_
else:
_ rtn=[None, None]_
OUT=rtn

Original Posting, thanks @Koz_Jono_Yeoh

Thanks for your response Ewan.

Does not that code return a picked point, rather than a point picked on a surface?

Springs seems to offer this functionality.

1 Like

Yes, I know, which is why setting the face as the current work plane was the only way I could get an accurate global xyz value. @john_pierson has got it I think with the above pick.points output.

Thanks Ewan, I used your method in the end!

Cheers.