Hi,
I have been searching the forum, but can’t find anywhere how to automatically dock a panel.
When I open my panel it is always somewhere flying on the screen.
How to dock a panel on the left or right side with RhinoCommon?
Hi,
I have been searching the forum, but can’t find anywhere how to automatically dock a panel.
When I open my panel it is always somewhere flying on the screen.
How to dock a panel on the left or right side with RhinoCommon?
How do you make your panel?
For dockable panels (like the Layer panel) you need to register your panel during plug-in start-up:
protected override LoadReturnCode OnLoad(ref string errorMessage)
{
Panels.RegisterPanel(this, typeof(MyPanel), "My Super Panel", MyPanelIcon);
return base.OnLoad(ref errorMessage);
}
and your class MyPanel
should inherit from System.Windows.Forms.UserControl
I register it like this:
Dim PanelType As System.Type = GetType(LutraCAD_Panel)
Rhino.UI.Panels.RegisterPanel(Me, PanelType, "LutraCAD", My.Resources.Logo)
Then i show it like this:
Dim bVisible As Boolean = Panels.IsPanelVisible(panelId)
If Not bVisible Then
Panels.OpenPanel(panelId)
End If
Sow how do I automatically dock it on the side?
Ah, I see. I think you might be able to use Panels.OpenPanelAsSibling
I use this:
Guid[] open = Panels.GetOpenPanelIds();
Panels.OpenPanelAsSibling(myPanelId, open.FirstOrDefault());
I’m not sure what happens if there are no panels open
I now read that you can also use the Layers Panel Id like so, should be more robust:
OpenPanelAsSibling(myPanelId, PanelIds.Layers);
Oke this seems to work, Thank you.
I first open the panel as sibling then I close rest of the panels.
So my panel stays docked
I’ve got Layer panel out,like
Guid[] panelIds = { Rhino.UI.PanelIds.Layers, Rhino.UI.PanelIds.ObjectProperties };
foreach (var item in panelIds)
{
Panels.OpenPanel(item);
}
But I don’t know how to dock them on the right of the screen(the Layer panel and Properties panel flying on the screen now).Any replies would be appreciated.
Hi @310440338,
This is not possible in RhinoCommon. You can get the CRhinoUiDockBar
associated with a panel in the C++ SDK then do whatever you want. But there is currently no direct access to it in RhinoCommon.
– Dale