/// <summary> /// Questo metodo crea e mostra una finestra di dialogo non modale, a meno che non esista già. /// </summary> /// <remarks> /// Il comando esterno lo richiama su richiesta dell'utente finale /// </remarks> /// public void ShowForm(UIApplication uiapp) { // If we do not have a dialog yet, create and show it if (m_MyForm == null || m_MyForm.IsDisposed) { // Un nuovo gestore per gestire l'invio delle richieste tramite la finestra di dialogo RequestHandler handler = new RequestHandler(); // Evento esterno per la finestra di dialogo da utilizzare (per inviare richieste) ExternalEvent exEvent = ExternalEvent.Create(handler); // Diamo gli oggetti alla nuova finestra di dialogo. // La finestra di dialogo diventa il proprietario responsabile della loro disposizione, alla fine. m_MyForm = new GetElementsForm(exEvent, handler); m_MyForm.Show(); m_MyForm.TopMost = true; } }
/// <summary> /// Il metodo principale del gestore di eventi. /// </summary> /// <remarks> /// Viene chiamato da Revit dopo che è stato generato l'evento esterno corrispondente /// (dal modulo non modale) e Revit ha raggiunto il momento in cui potrebbe /// chiamare il gestore dell'evento (cioè questo oggetto) /// </remarks> /// public void Execute(UIApplication uiapp) { try { switch (Request.Take()) { case RequestId.None: { return; // no request at this time -> we can leave immediately } case RequestId.Default: { _elementList = GetElementsfromDb(uiapp); getElementsForm = App.thisApp.RetriveForm(); getElementsForm.FillDataGrid(); break; } case RequestId.Id: { getElementsForm = App.thisApp.RetriveForm(); ElementId id = getElementsForm.GetElemId(); _elementSingle = GetSingleElement(uiapp, id); getElementsForm.SetListBox(); break; } default: { // Una sorta di avviso qui dovrebbe informarci di una richiesta imprevista break; } } } finally { App.thisApp.WakeFormUp(); App.thisApp.ShowFormTop(); } return; }
/// <summary> /// Implementa l'evento OnStartup /// </summary> /// <param name="application"></param> /// <returns></returns> public Result OnStartup(UIControlledApplication application) { m_MyForm = null; // nessun dialogo ancora necessario; il comando lo porterà thisApp = this; // accesso statico a questa istanza dell'applicazione // Metodo per aggiungere un Tab e un RibbonPanel RibbonPanel ribbonPanel = RibbonPanel(application); string thisAssemblyPath = Assembly.GetExecutingAssembly().Location; // Creazione del Button da inserire nel Tab if (ribbonPanel.AddItem( new PushButtonData("GetElements", "GetElements", thisAssemblyPath, "GetElements.Command")) is PushButton button) { // ToolTip mostrato button.ToolTip = "GetElements"; // Icona del Button button.Image = GetEmbeddedImage("GetElements.Resources.BOLDsft_16.png"); button.LargeImage = GetEmbeddedImage("GetElements.Resources.BOLDsft_32.png"); } ; return(Result.Succeeded); }