/// <summary> /// Costruttore della finestra di dialogo /// </summary> /// public TypesSelectorForm(ExternalEvent exEvent, RequestHandler handler) { InitializeComponent(); m_Handler = handler; m_ExEvent = exEvent; thisApp = this; }
/// <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 TypesSelectorForm(exEvent, handler); m_MyForm.Show(); m_MyForm.TopMost = true; } }
/// <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("TypesSelector", "TypesSelector", thisAssemblyPath, "TypesSelector.Command")) is PushButton button) { // ToolTip mostrato button.ToolTip = "Visualizzatore di Tipologie"; // Icona del Button button.Image = GetEmbeddedImage("TypesSelector.Resources.BOLDsft_16.png"); button.LargeImage = GetEmbeddedImage("TypesSelector.Resources.BOLDsft_32.png"); } ; return(Result.Succeeded); }
/// <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.Initial: { //// Assegnazione del nome del View Template //_nameViewTemplate = "3D - Curtain Wall LOD200(Blank)"; // Chiama il metodo che cattura tutti i Curtain Panels _elements = GetElementsfromDb(uiapp); // Chiama i metodi per il riempimento delle liste del UTI e del PTI GetListUTI(uiapp, _elements); GetListPTI(uiapp, _elements); // Chiama i metodi di riempimento dei DataGridView _typesSelectorForm = App.thisApp.RetriveForm(); _typesSelectorForm.SetDataGridViewUTI(); _typesSelectorForm.SetDataGridViewPTI(); // Chiama i metodi che cancellano le selezioni automatiche nei DataGridView _typesSelectorForm.clearSelection_dataGridView1(); _typesSelectorForm.clearSelection_dataGridView2(); // Chiama il metodo che imposta il View Template ApplyNewViewtemplate(uiapp, 0); break; } case RequestId.UTI: { // Chiama la lista degli elementi selezionati nel DataGridView1 _typesSelectorForm = App.thisApp.RetriveForm(); _elementListUTI = _typesSelectorForm.ElementList; _elementsListUTI = _typesSelectorForm.ElementsList; if (_elementListUTI.Count != 0) { ChoiceOfParameterAndChangeColor(uiapp, _elementListUTI); } else if (_elementsListUTI.Count != 0) { ChangeColorOfAllPanels(uiapp, _elementsListUTI); } // Cancella il contenuto delle liste _elementListUTI.Clear(); _elementsListUTI.Clear(); break; } case RequestId.PTI: { // Chiama la lista degli elementi selezionati nel DataGridView2 _typesSelectorForm = App.thisApp.RetriveForm(); _elementListPTI = _typesSelectorForm.ElementList; _elementsListPTI = _typesSelectorForm.ElementsList; if (_elementListPTI.Count != 0) { ChoiceOfParameterAndChangeColor(uiapp, _elementListPTI); } else if (_elementsListPTI.Count != 0) { ChangeColorOfAllPanels(uiapp, _elementsListPTI); } // Cancella il contenuto delle liste _elementListPTI.Clear(); _elementsListPTI.Clear(); break; } case RequestId.AllUTI: { // Chiama la lista di tutti gli unit Type Identifier _typesSelectorForm = App.thisApp.RetriveForm(); _elementListAllUTI = _typesSelectorForm.ElementsList; // Chiama il metodo che cambia il colore di tutti i pannelli ChangeColorOfAllPanels(uiapp, _elementListAllUTI); // RipuChangeColorOfAllPanelslisce la lista _elementListAllUTI.Clear(); break; } case RequestId.AllPTI: { // Chiama la lista di tutti gli unit Type Identifier _typesSelectorForm = App.thisApp.RetriveForm(); _elementListAllPTI = _typesSelectorForm.ElementsList; // Chiama il metodo che cambia il colore di tutti i pannelli ChangeColorOfAllPanels(uiapp, _elementListAllPTI); // Ripulisce la lista _elementListAllPTI.Clear(); break; } case RequestId.Cancel: { // Riporta i colori al Bianco ChangeColorToBlank(uiapp); // Chiama i metodi che cancellano le selezioni automatiche nei DataGridView _typesSelectorForm = App.thisApp.RetriveForm(); _typesSelectorForm.clearSelection_dataGridView1(); _typesSelectorForm.clearSelection_dataGridView2(); break; } case RequestId.Esc: { // Cancella tutte le selezioni fatte finora CancelAllChanges(uiapp); //// Assegnazione del nome del View Template //_nameViewTemplate = "3D - Curtain Wall LOD300(AbacoGlass)"; // Chiama il metodo che imposta il View Template ApplyNewViewtemplate(uiapp, -1); //// Cambia lo stile di visualizzazione //ChangeVisualStyle(uiapp); // Chiude la finestra di dialogo _typesSelectorForm = App.thisApp.RetriveForm(); _typesSelectorForm.FormClose(); break; } default: { // Una sorta di avviso qui dovrebbe informarci di una richiesta imprevista break; } } } finally { App.thisApp.WakeFormUp(); App.thisApp.ShowFormTop(); } return; }