Using WindowsForm to pickpoint()

Here an alternative with Hide() and Show()

test pickpoint2


import clr
clr.AddReference('RevitAPIUI')
from Autodesk.Revit.UI import *
from Autodesk.Revit.UI.Selection import *

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

doc = DocumentManager.Instance.CurrentDBDocument
uidoc = DocumentManager.Instance.CurrentUIApplication.ActiveUIDocument

clr.AddReference('System.Windows.Forms')
clr.AddReference('System.Drawing')
import System.Drawing
import System.Windows.Forms
from System.Drawing import *
from System.Windows.Forms import *
from System import IntPtr

def sp(form):
    form.Hide()
    try:
        a = uidoc.Selection.PickPoint(ObjectSnapTypes.Endpoints,"Please select point")
    except Exception as ex:
        print(ex)
        a = "NA"
    form.Show()
    return a

class pickPoint(Form):
    def __init__(self):
        self.button1 = Button()
        self.button2 = Button()
        self._label1 = Label()
        self.p = None
        # 
        # label1
        # 
        self._label1.Location = System.Drawing.Point(30, 50)
        self._label1.Name = "label1"
        self._label1.Size = System.Drawing.Size(300, 23)
        self._label1.TabIndex = 0
        self._label1.Text = "Point : "
        #
        #button1
        #
        self.button1.Location = System.Drawing.Point(288, 129)
        self.button1.Name = "button1"
        self.button1.Size = System.Drawing.Size(150, 34)
        self.button1.TabIndex = 0
        self.button1.Text = "Please Pick Point"
        self.button1.Click += self.button1Click
        #
        #button1
        #
        self.button2.Location = System.Drawing.Point(30, 129)
        self.button2.Name = "button2"
        self.button2.Size = System.Drawing.Size(150, 34)
        self.button2.TabIndex = 0
        self.button2.Text = "Cancel"
        self.button2.Click += self.button2Click
        #
        #Form1
        #
        self.ClientSize = System.Drawing.Size(452, 196)
        self.Controls.Add(self.button1)
        self.Controls.Add(self.button2)
        self.Controls.Add(self._label1)
        self.Name = "Form1"
        self.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen
        self.Text = "pickPoint"
        self.ResumeLayout(False)

    def button1Click(self,sender,e):
        self.p = sp(self)
        self._label1.Text = "Point : {}".format(self.p.ToString())

    def button2Click(self,sender,e):
        self.Close()


form = pickPoint()
Application.Run(form)
OUT = form.p
2 Likes