Hey,
I am making a dockable panel and I want to show some data of the currently selected element in revit.
I’ve looked and read a lot on this forum about the topic but can’t seem to figure it out.
I think i need to use the SelectionChanged Event but don’t know how to implement it.
I’m kinda new to using classes so im still learning.
This is my code so far.
The panel is visible and works great with the xaml.
import System
import os.path as op
from pyrevit import HOST_APP, framework, coreutils, PyRevitException
from pyrevit import revit, DB, UI
from pyrevit import forms, script
from pyrevit.framework import wpf, ObservableCollection
from System.Windows.Media import Brushes
sample_panel_id = "1458b7cb-4dbe-4a8e-bad3-837e14b0a1ca"
warnings_list = []
class _WPFPanelProvider(UI.IDockablePaneProvider):
def __init__(self, panel_type, default_visible=True):
self._panel_type = panel_type
self._default_visible = default_visible
self.panel = self._panel_type()
def SetupDockablePane(self, data):
data.FrameworkElement = self.panel
data.VisibleByDefault = self._default_visible
def register_dockable_panel(panel_type, default_visible=True):
if not issubclass(panel_type, forms.WPFPanel):
raise PyRevitException(
"Dockable pane must be a subclass of forms.WPFPanel"
)
panel_uuid = coreutils.Guid.Parse(panel_type.panel_id)
dockable_panel_id = UI.DockablePaneId(panel_uuid)
panel_provider = _WPFPanelProvider(panel_type, default_visible)
HOST_APP.uiapp.RegisterDockablePane(
dockable_panel_id,
panel_type.panel_title,
panel_provider
)
return panel_provider.panel
class DockableExample(forms.WPFPanel):
panel_source = op.join(op.dirname(__file__), "MainWindow.xaml")
panel_title = "Dockable Pane Sample"
panel_id = "3110e336-f81c-4927-87da-4e0d30d4d64a"
def CheckBox_Checked_1(self, sender, args):
forms.alert("1")
def CheckBox_Unchecked_1(self, sender, args):
forms.alert("2")
def ButtonClicked_1(self, sender, args):
with open("L:/REVIT/PyRevit/HEK_Toolbars/Tab H-ALG/H-ALG.extension/H-ALG.tab/Algemeen.panel/WerkInstructies.pushbutton/script.py") as f:
exec(f.read())
forms.alert("3")
def CheckBox_Checked_2(self, sender, args):
forms.alert("4")
def CheckBox_Unchecked_2(self, sender, args):
forms.alert("5")
def CheckBox_Checked_3(self, sender, args):
forms.alert("6")
def CheckBox_Unchecked_3(self, sender, args):
forms.alert("7")
def ComboBoxUpdated_1(self, sender, args):
forms.alert("8")
def WriteText1(self, sender, args):
forms.alert("9")
def WriteText2(self, sender, args):
forms.alert("10")
def WriteText3(self, sender, args):
forms.alert("11")
registered_panel = register_dockable_panel(DockableExample)