/// <summary> /// /// </summary> /// <param name="app"></param> /// <returns>The Result of the command</returns> public Result OnStartup(UIControlledApplication app) { Main.uiCtrlApp = app; Main.activeExtrApp = this; // Create Updater to prevent panel element modification while interface is open Main.elementProtectionUpdater = new ElementProtectionUpdater(app.ActiveAddInId); UpdaterRegistry.RegisterUpdater(elementProtectionUpdater); LogicalOrFilter filter = new LogicalOrFilter( new List <ElementFilter> { new ElementCategoryFilter(BuiltInCategory.OST_Walls), new ElementCategoryFilter(BuiltInCategory.OST_Floors), new ElementCategoryFilter(BuiltInCategory.OST_Windows), new ElementCategoryFilter(BuiltInCategory.OST_Doors), new ElementCategoryFilter(BuiltInCategory.OST_StructConnections), }); UpdaterRegistry.AddTrigger(elementProtectionUpdater.GetUpdaterId(), filter, Element.GetChangeTypeAny()); // Add the ribbon panel this.AddExtensionRibbon(app); return(Result.Succeeded); }
public ModelessForm( ExternalCommandData commandData, UIControlledApplication uiCtrlApp, ExternalEvent externalEvent, EventHandler eventHandler, ElementProtectionUpdater elementProtectionUpdater, List <Element> elementList, Main.SetSelection selectionTool ) { InitializeComponent(); debug = new DebugController(TestPanel, listBox1, listBox2); //selectionTool(new List<ElementId>()); // Stop IdlingHandler from executing during initialization this.haltIdlingHandler = true; // Get all data needed for use on the modeless form this.commandData = commandData; this.uiApp = this.commandData.Application; this.uiDoc = this.uiApp.ActiveUIDocument; this.doc = this.uiDoc.Document; this.uiCtrlApp = uiCtrlApp; this.externalEvent = externalEvent; this.eventHandler = eventHandler; this.elementProtectionUpdater = elementProtectionUpdater; // Initialize Front-end Controllers this.selectionController = new ElementSelectionController( ElementSelectionPanel, ElementSelectionLabel, ElementSelectionTreeView); OptionVisibilityController optionVisibility = new OptionVisibilityController( OptionVisibilityPanel, OptionVisibilityCheckBox); OptionFilterController optionFilter = new OptionFilterController( OptionFilterPanel, OptionFilterRadioButton0, OptionFilterRadioButton1, OptionFilterRadioButton2); OptionHideNodeController optionHideNode = new OptionHideNodeController( OptionHideNodePanel, OptionHideNodeCheckedListBox); this.optionController = new OptionController(OptionPanel, optionVisibility, optionFilter, optionHideNode); ActionAxisController xAxis = new ActionAxisController( ActionShiftPanel0, ActionShiftLabel0, ActionShiftTextBox0); ActionAxisController yAxis = new ActionAxisController( ActionShiftPanel1, ActionShiftLabel1, ActionShiftTextBox1); ActionAxisController zAxis = new ActionAxisController( ActionShiftPanel2, ActionShiftLabel2, ActionShiftTextBox2); ActionModeController mode = new ActionModeController( ActionModePanel, ActionModeRadioButton0, ActionModeRadioButton1); List <ActionAxisController> xyz = new List <ActionAxisController>() { xAxis, yAxis, zAxis }; this.actionController = new ActionController( ActionPanel, ActionResetButton, ActionShiftButton, ActionPromptLabel, xyz, mode); // Initialize Back-end Controllers this.revitController = new RevitController(commandData); this.dataController = new DataController(this.doc); this.requestHandler = new RequestHandler(); this.filterController = new FilterController(this.revitController); // Get elementList, not sure what to use it for elementList = elementList.Where(e => null != e.Category && e.Category.HasMaterialQuantities).ToList(); // Execute method ModelessForm_FormClosed when the form is closing this.FormClosing += this.ModelessForm_FormClosed; }