带有SplitButtons / PullDownButton和PushButtons的Ribbon结构

时间:2016-04-05 18:08:53

标签: c# revit-api revit

我开发了一个AutoCAD插件,涉及级联下拉菜单,我想在Revit中做同样的事情,但是由于缺少CUI文件,Revit中的任务要比在AutoCAD中要困难得多。这样

我正在使用功能区来查看我是否可以在那里做同样的事情,并且一直在玩SplitButtons,PulldownButtons和Pushbuttons并且发现了一些东西。

在此之前,我想要完成的图像是here

Electrical PulldownButton包含另一个名为Wire的PulldownButton。无论是使用Pulldowns还是SplitButtons,我都希望有几层。

我使用Revit API在C#中编程时发现,SplitButtons和PulldownButtons无法添加自身的实例,只需PushButtons!这使我感到困惑,因为他们能够在上面的图片中做到这一点。

编辑:attached here是Revit中级联菜单的图片。我被告知这是可能的,但很难实现。

2 个答案:

答案 0 :(得分:2)

我完全同意奥古斯托。这是不受支持和未记录的领域。 Building Coder演示了一些使用AdWindows.dll在“自动化”中提供的不受支持的功能的示例。类别或职位:

http://thebuildingcoder.typepad.com/blog/automation

Revit SDK中包含的RvtSamples外部应用程序提供了添加大量以二级或三级层次结构排列的菜单项的一个具体示例。

答案 1 :(得分:0)

您可能正在寻找sample like this

public void AddSplitButton(RibbonPanel panel)
{
  // Create three push buttons for split button drop down 

  // #1 
  PushButtonData pushButtonData1 = new PushButtonData("SplitCommandData", "Command Data", _introLabPath, _introLabName + ".CommandData");
  pushButtonData1.LargeImage = NewBitmapImage("ImgHelloWorld.png");

  // #2 
  PushButtonData pushButtonData2 = new PushButtonData("SplitDbElement", "DB Element", _introLabPath, _introLabName + ".DBElement");
  pushButtonData2.LargeImage = NewBitmapImage("ImgHelloWorld.png");

  // #3 
  PushButtonData pushButtonData3 = new PushButtonData("SplitElementFiltering", "ElementFiltering", _introLabPath, _introLabName + ".ElementFiltering");
  pushButtonData3.LargeImage = NewBitmapImage("ImgHelloWorld.png");

  // Make a split button now 
  SplitButtonData splitBtnData = new SplitButtonData("SplitButton", "Split Button");
  SplitButton splitBtn = panel.AddItem(splitBtnData) as SplitButton;
  splitBtn.AddPushButton(pushButtonData1);
  splitBtn.AddPushButton(pushButtonData2);
  splitBtn.AddPushButton(pushButtonData3);
}