如何在 Revit 中将按钮添加到上下文功能区
How to add a button to a contextual ribbon in Revit
我想向某些上下文功能区添加按钮...具体来说:
Modify | Multi-Select
、Modify | Pipes
、Modify | Sprinklers
、Modify | Pipe Accessories
、Modify | Pipe Fittings
、Modify | Mechanical Equipment
和
Modify | Generic Models
并将按钮放在我创建的面板中。我怎样才能做到这一点?
我试过:
if (pTab.Id == "Modify | Pipes")
{
foreach (var pPanel in pTab.Panels)
{
if (pPanel.Source.Id == "Edit") //Also tried edit_shr
{// Add button.
pIcon = Properties.Resources.AS_Revit_UI_hydraulicParameters_icon.GetHbitmap();
var pBtn = new Autodesk.Windows.RibbonButton()
{
Name = "Hydraulic Parameters",
Image = System.Windows.Interop.Imaging.CreateBitmapSourceFromHBitmap(pIcon, IntPtr.Zero, System.Windows.Int32Rect.Empty, BitmapSizeOptions.FromWidthAndHeight(32, 32)),
Id = "id_hydParam",
AllowInStatusBar = true,
AllowInToolBar = true,
GroupLocation = Autodesk.Private.Windows.RibbonItemGroupLocation.Middle,
MinHeight = 0,
MinWidth = 0,
Height = 32,
Width = 32,
IsEnabled = true,
IsVisible = true,
IsCheckable = true,
ShowImage = true,
ShowText = true,
Orientation = System.Windows.Controls.Orientation.Vertical,
Text = "Hydraulic Parameters",
Size = Autodesk.Windows.RibbonItemSize.Large,
ResizeStyle = Autodesk.Windows.RibbonItemResizeStyles.HideText
};
pPanel.Source.Items.Add(pBtn);
//Add event handler for button push
}
}
}
不幸的是,这没有用。我确信这是可能的 - 我只是不知道如何。我觉得这是一个不知道 Revit 发布的选项卡名称的问题——比如 Modify | Pipes
实际上是 modify_pipes
之类的东西。
上面的代码是我试图将我的按钮放在 Revit 面板中......有没有办法用我自己的按钮添加我自己的面板?是这样的:
这是最理想的情况。我对任何其他解决方案都很满意,例如将按钮添加到现有面板。任何帮助都是很好的帮助!谢谢!!
确实可以通过以下方式实现:
- 在默认位置之一的任意位置以正常方式创建功能区面板按钮。
- 使用 .NET 自动化将按钮移动到其他位置 API。
如果您的目标位置是上下文选项卡,您可能需要在每次打开该选项卡时重新定位按钮。
The Building Coder 记录了这个过程:
不建议将此方法用于生产,而且我听说这种方法可能会导致崩溃和文件损坏,所以要当心!
请注意 Disclaimer!
我想向某些上下文功能区添加按钮...具体来说:
Modify | Multi-Select
、Modify | Pipes
、Modify | Sprinklers
、Modify | Pipe Accessories
、Modify | Pipe Fittings
、Modify | Mechanical Equipment
和
Modify | Generic Models
并将按钮放在我创建的面板中。我怎样才能做到这一点?
我试过:
if (pTab.Id == "Modify | Pipes")
{
foreach (var pPanel in pTab.Panels)
{
if (pPanel.Source.Id == "Edit") //Also tried edit_shr
{// Add button.
pIcon = Properties.Resources.AS_Revit_UI_hydraulicParameters_icon.GetHbitmap();
var pBtn = new Autodesk.Windows.RibbonButton()
{
Name = "Hydraulic Parameters",
Image = System.Windows.Interop.Imaging.CreateBitmapSourceFromHBitmap(pIcon, IntPtr.Zero, System.Windows.Int32Rect.Empty, BitmapSizeOptions.FromWidthAndHeight(32, 32)),
Id = "id_hydParam",
AllowInStatusBar = true,
AllowInToolBar = true,
GroupLocation = Autodesk.Private.Windows.RibbonItemGroupLocation.Middle,
MinHeight = 0,
MinWidth = 0,
Height = 32,
Width = 32,
IsEnabled = true,
IsVisible = true,
IsCheckable = true,
ShowImage = true,
ShowText = true,
Orientation = System.Windows.Controls.Orientation.Vertical,
Text = "Hydraulic Parameters",
Size = Autodesk.Windows.RibbonItemSize.Large,
ResizeStyle = Autodesk.Windows.RibbonItemResizeStyles.HideText
};
pPanel.Source.Items.Add(pBtn);
//Add event handler for button push
}
}
}
不幸的是,这没有用。我确信这是可能的 - 我只是不知道如何。我觉得这是一个不知道 Revit 发布的选项卡名称的问题——比如 Modify | Pipes
实际上是 modify_pipes
之类的东西。
上面的代码是我试图将我的按钮放在 Revit 面板中......有没有办法用我自己的按钮添加我自己的面板?是这样的:
这是最理想的情况。我对任何其他解决方案都很满意,例如将按钮添加到现有面板。任何帮助都是很好的帮助!谢谢!!
确实可以通过以下方式实现:
- 在默认位置之一的任意位置以正常方式创建功能区面板按钮。
- 使用 .NET 自动化将按钮移动到其他位置 API。
如果您的目标位置是上下文选项卡,您可能需要在每次打开该选项卡时重新定位按钮。
The Building Coder 记录了这个过程:
不建议将此方法用于生产,而且我听说这种方法可能会导致崩溃和文件损坏,所以要当心!
请注意 Disclaimer!