Message 1 of 2
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report
I try to use DocumentOpened Event to create a beamlist. And put beamlist to ComboBoxMemberData.
But it's fail. when I open the Document combobox is null.
So I try to check beamlist is null or not. I use MessageBox to show the list. It's OK.
why combobox can't read beamlist. And how to fix this problem.
thank you for answer this question.
using Autodesk.Revit.DB; using Autodesk.Revit.UI; using System; using System.Collections.Generic; using System.Reflection; using System.Text; using System.Windows.Forms; using Autodesk.Revit.UI.Events; namespace EventTest { [Autodesk.Revit.Attributes.Transaction(Autodesk.Revit.Attributes.TransactionMode.Manual)] public class DocumentCreating : IExternalApplication { private static string AddInPath = typeof(DocumentCreating).Assembly.Location; public static IList<Element> BeamFamilySymbolList = new List<Element>(); public void DocumentOpened(object sender, Autodesk.Revit.DB.Events.DocumentOpenedEventArgs e) { Document doc = e.Document; FilteredElementCollector collector = new FilteredElementCollector(doc); BeamFamilySymbolList = collector.OfClass(typeof(FamilySymbol)).OfCategory(BuiltInCategory.OST_StructuralFraming).ToElements(); StringBuilder st = new StringBuilder(); foreach (Element BeamName in BeamFamilySymbolList) { FamilySymbol fs = BeamName as FamilySymbol; string name = fs.Family.Name + fs.Name; st.AppendLine(name); } MessageBox.Show(st.ToString()); } public Result OnShutdown(UIControlledApplication application) { // nothing to clean up in this simple case return Result.Succeeded; } public Autodesk.Revit.UI.Result OnStartup(UIControlledApplication application) { application.ControlledApplication.DocumentOpened += new EventHandler<Autodesk.Revit.DB.Events.DocumentOpenedEventArgs>(DocumentOpened); RibbonPanel ribbonSamplePanel = application.CreateRibbonPanel("Creat Beam"); PushButtonData pushButtonData = new PushButtonData("Creat", "creat", AddInPath, "Revit.SDK.Samples.Ribbon.CS.ResetSetting"); ComboBoxData comboBoxDataBeam = new ComboBoxData("BeamsSelector"); IList<RibbonItem> ribbonItemsStacked = ribbonSamplePanel.AddStackedItems(pushButtonData, comboBoxDataBeam); Autodesk.Revit.UI.ComboBox comboboxBeam = (Autodesk.Revit.UI.ComboBox)(ribbonItemsStacked[1]); foreach (Element elem in BeamFamilySymbolList) { FamilySymbol fs = elem as FamilySymbol; ComboBoxMemberData comboBoxMemberData = new ComboBoxMemberData(fs.Name, fs.Name); comboBoxMemberData.GroupName = fs.Family.Name; ComboBoxMember comboboxMember = comboboxBeam.AddItem(comboBoxMemberData); } return Result.Succeeded; } } }
Solved! Go to Solution.