/*------------------------------------------------------------------------- * 功能描述:GroupButtons * 作者:xulisong * 创建时间: 2019/3/8 9:23:22 * 版本号:v1.0 * -------------------------------------------------------------------------*/ using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using Autodesk.Revit.UI; namespace FWindSoft.Revit.Menu { public class GroupButtons : List { public GroupButtons() { } public GroupButtons(IEnumerable source) : base(source) { } private void Valid() { if (!IsValid) { throw new Exception("分组数量不能为零"); } } public bool IsValid { get { return this.Any(); } } public bool IsStack { get { return this.Any(r => r.IsStack); } } /// /// 分组的按钮样式 /// public RevitButtonStyle GroupButtonStyle { get { Valid(); return this.FirstOrDefault().ButtonStyle; } } /// /// 创建按钮数据 /// /// public List CreatePushButtons() { List result = new List(); foreach (RevitButton button in this) { PushButtonData data = new PushButtonData(button.Name, button.Text, button.AssemblyName, button.ClassName); RibbonItemUtil.AppendButtonData(data, button); result.Add(data); } return result; } /// /// 获取创建按钮的数据 /// /// public ButtonData GetButtonData() { Valid(); var firstButton = this.FirstOrDefault(); switch (GroupButtonStyle) { case RevitButtonStyle.Pulldown: { string name = firstButton.Name; string text = firstButton.Text; var data= new PulldownButtonData(name, text); RibbonItemUtil.AppendButtonData(data, firstButton); return data; } case RevitButtonStyle.Split: { return new SplitButtonData(firstButton.Name, firstButton.Text); } case RevitButtonStyle.Push: { return CreatePushButtons().FirstOrDefault(); } } return null; } /// /// 将子按钮附着单button上 /// /// public void AppendButton(RibbonItem button) { var buttonDatas = CreatePushButtons(); RibbonItemUtil.AppendButtons(button, buttonDatas); } } }