Hey,
i have one line of code (Selection of Face) that works well as its own UI button.
Watch the following video: https://youtu.be/SK5LuRr4BTw
Code:
import clr
import sys
sys.path.append(‘C:\Program Files (x86)\IronPython 2.7\Lib’)
import System
from System import Array
from System.Collections.Generic import *
clr.AddReference(‘ProtoGeometry’)
from Autodesk.DesignScript.Geometry import *
clr.AddReference(“RevitNodes”)
import Revit
clr.ImportExtensions(Revit.Elements)
clr.ImportExtensions(Revit.GeometryConversion)
clr.AddReference(“RevitServices”)
import RevitServices
from RevitServices.Persistence import DocumentManager
from RevitServices.Transactions import TransactionManager
clr.AddReference(“RevitAPI”)
clr.AddReference(“RevitAPIUI”)
import Autodesk
from Autodesk.Revit.DB import *
from Autodesk.Revit.UI import *
doc = DocumentManager.Instance.CurrentDBDocument
uiapp = DocumentManager.Instance.CurrentUIApplication
app = uiapp.Application
uidoc = uiapp.ActiveUIDocument
a = uidoc.Selection.PickObject(Autodesk.Revit.UI.Selection.ObjectType.Face)
print(a)
Now i want to be able to do the same with my own UI and when I select a button that i am then able to select a face with this line of code.
I have been trying very hard, dived into classes and functions but i just can not make it properly work. Right now the problem is that when i click the button Revit is frozen and greyed out. I cannot select anything. But when i close my window i can select a face.
Watch the following video:
Code:
# dependencies
import clr
clr.AddReference('System.Windows.Forms')
clr.AddReference('IronPython.Wpf')
#Import the Revit API
import clr
import sys
sys.path.append('C:\Program Files (x86)\IronPython 2.7\Lib')
import System
from System import Array
from System.Collections.Generic import *
clr.AddReference('ProtoGeometry')
from Autodesk.DesignScript.Geometry import *
clr.AddReference("RevitNodes")
import Revit
clr.ImportExtensions(Revit.Elements)
clr.ImportExtensions(Revit.GeometryConversion)
clr.AddReference("RevitServices")
import RevitServices
from RevitServices.Persistence import DocumentManager
from RevitServices.Transactions import TransactionManager
clr.AddReference("RevitAPI")
clr.AddReference("RevitAPIUI")
import Autodesk
from Autodesk.Revit.DB import *
from Autodesk.Revit.UI import *
from pyrevit import revit, DB, UI
# find the path of ui.xaml
from pyrevit import script
from pyrevit import forms
xamlfile = script.get_bundle_file('ui.xaml')
# import WPF creator and base Window
import wpf
from System import Windows
class PrintSheetsWindow(forms.WPFWindow):
def __init__(self):
wpf.LoadComponent(self, xamlfile)
def face(self, sender, args):
#this does not work
doc = DocumentManager.Instance.CurrentDBDocument
uiapp = DocumentManager.Instance.CurrentUIApplication
app = uiapp.Application
uidoc = uiapp.ActiveUIDocument
a = uidoc.Selection.PickObject(Autodesk.Revit.UI.Selection.ObjectType.Face)
return a
# let's show the window (modal)
PrintSheetsWindow().ShowDialog()
Thanks for any help
Laurin