Структура ленты с SplitButtons / PullDownButton и PushButtons

Я разработал плагин для AutoCAD, который включает каскадные раскрывающиеся меню, и я хочу сделать то же самое в Revit, однако задача в Revit намного сложнее, чем в AutoCAD, из-за отсутствия файлов CUI и т.п.

Я работаю с лентой, чтобы посмотреть, смогу ли я сделать то же самое там, и играл с SplitButtons, PulldownButtons и Pushbuttons и обнаружил пару вещей.

Перед этим изображение того, что я хочу сделать, находится здесь:

Электрический PulldownButton содержит еще один PulldownButton, называемый Wire. Я хочу иметь для этого несколько слоев, будь то Pulldown или SplitButtons.

При программировании на C # с помощью Revit API я обнаружил, что SplitButtons и PulldownButtons не могут добавлять свои экземпляры, только PushButtons! Что меня смущает, потому что они смогли сделать это на картинке выше.

изменить: здесь приведено изображение каскадного меню в Revit. Мне сказали это было возможно, но довольно сложно реализовать.


person user3026715    schedule 05.04.2016    source источник


Ответы (2)


Я полностью согласен с Аугусто. Это неподдерживаемая и недокументированная территория. Building Coder демонстрирует несколько примеров использования неподдерживаемых функциональных возможностей, предоставляемых AdWindows.dll в категории или сообщениях «Автоматизация»:

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

Одним из конкретных примеров добавления большого количества пунктов меню, организованных в двух- или трехуровневую иерархию, является внешнее приложение RvtSamples, включенное в Revit SDK.

person Jeremy Tammik    schedule 06.04.2016

Вероятно, вы ищете пример , подобный этому < / а>:

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);
}
person Augusto Goncalves    schedule 05.04.2016
comment
Привет, Августо, спасибо за ответ. Однако это не то, что я ищу. Я уже знаю, как добавлять кнопки в SplitButton. Я ищу добавление SplitButtons к другому SplitButton. как в примере, который я показал выше, где на вкладке «Электрооборудование» есть «Провод» и «Устройство», которые могут раскрыться еще дальше. - person user3026715; 05.04.2016
comment
На самом деле это произойдет, когда панель полностью свернется из-за маленького экрана (или когда вы измените размер главного окна Revit) - person Augusto Goncalves; 05.04.2016
comment
Ой. :( Значит, тогда я полагаю, что это невозможно? - person user3026715; 05.04.2016
comment
Боюсь, это невозможно. Лента Revit использует AdWindows.dll, но отображает все объекты в собственном API, поэтому там много функций, но их нелегко раскрыть. Если вы используете AdWindows.dll напрямую, значит, вы находитесь на неподдерживаемой / недокументированной территории :-( - person Augusto Goncalves; 05.04.2016