/// <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 ModelessForm(exEvent, handler); m_MyForm.Show(); if (ModelessForm.thisModForm.NotSaveFolder) { m_MyForm.TopMost = false; } else { m_MyForm.TopMost = true; } } }
/// <summary> /// Metodo per l'apertura della VIEW SCELTA /// </summary> public void SingleOpenView(UIApplication uiapp, string viewName) { UIDocument uidoc = uiapp.ActiveUIDocument; Document doc = uidoc.Document; FilteredElementCollector viewCollector = new FilteredElementCollector(doc); viewCollector.OfClass(typeof(Autodesk.Revit.DB.View)); //string[] elevations = new string[] { "Exterior", "Interior", "Left", "Right" }; // Cambia il valore booleano per attestare che la richiesta della view è singola _single = true; foreach (Autodesk.Revit.DB.View viewElement in viewCollector) { if (viewElement.Name == viewName) { uidoc.RequestViewChange(viewElement); _imageViewed = viewElement.Name; // Chiama la Form modelessForm = App.thisApp.RetriveForm(); // Mostra nella combobox la vista attiva modelessForm.AssignValueComboBox(); // Salvo ed esco uidoc.SaveAndClose(); } } }
private void saveForm_FormClosing(Object sender, FormClosingEventArgs e) { // Inizializza ModelessForm e la attiva _modelessForm = App.thisApp.RetriveForm(); _modelessForm.WakeUp(); _modelessForm.BringToFront(); }
/// <summary> /// Metodo che definisce cosa accade al Salvataggio del nuovo percorso /// </summary> private void changeSavebutton_Click(object sender, EventArgs e) { try { // Mostra la FolderBrowserDialog. DialogResult dialogResult = folderBrowserDialog1.ShowDialog(); if (dialogResult == DialogResult.OK) { // Ottiene il nuovo Path della cartellaI mages _newPathImagesFolder = folderBrowserDialog1.SelectedPath; // Scrive il nuovo Path nel Path di default _pathImagesFolder = _newPathImagesFolder; // Chiama il metodo in ModelessForm che imposta il nuovo Path delle immagini ModelessForm.thisModForm.SetNewImagesPath(); // Scrive il nuovo Path nel File .json di configurazione Json fileJson = new Json(); fileJson.UpdateJson(2, 1, "ImagesFolderPath", _pathImagesFolder); // Chiude questa Form e attiva la Form ModelessForm this.Close(); _modelessForm = App.thisApp.RetriveForm(); _modelessForm.WakeUp(); _modelessForm.BringToFront(); } } catch (SecurityException ex) { MessageBox.Show($"Security error.\n\nError message: {ex.Message}\n\n" + $"Details:\n\n{ex.StackTrace}"); } }
private void exitButton_Click(object sender, EventArgs e) { this.TopMost = false; this.Close(); // Inizializza ModelessForm e la attiva _modelessForm = App.thisApp.RetriveForm(); _modelessForm.WakeUp(); _modelessForm.BringToFront(); }
/// <summary> /// Costruttore della finestra di dialogo /// </summary> /// public ModelessForm(ExternalEvent exEvent, RequestHandler handler) { InitializeComponent(); m_Handler = handler; m_ExEvent = exEvent; // Riempie l'istanza di questa classe con la Form ModelessForm thisModForm = this; openFileDialog1.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.UserProfile) + @"\OneDrive - BOLD\BOLD Software\Repository for Plugin\GetImages\Files da caricare"; // Verifica se il Path delle Immagini esista e lo importa GetFileTxt(); if (_imagesPath == "") { MessageBox.Show("La cartella Images non è stato caricata." + "\nSegui questa procedura per caricarla dal percorso che preferisci."); // Apre la Form SaveForm OpenSaveForm(); _notSaveFolder = true; } // Imposta il TextBox della View Scale viewScaleTextBox.Text = Convert.ToString(m_Handler.Scale); // Imposta la ComboBox del Detail Level foreach (var item in _detailLevels) { detailLevelComboBox.Items.Add(item); } _detailLevelEdit = _detailLevels[0]; detailLevelComboBox.Text = _detailLevelEdit; // Imposta la ComboBox del Visual style foreach (var item in _visualStyles) { visualStyleComboBox.Items.Add(item); } _visualStyleEdit = _visualStyles[1]; visualStyleComboBox.Text = _visualStyleEdit; }
/// <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("GetImages", "GetImages", thisAssemblyPath, "GetImages_2.Command")) is PushButton button) { // ToolTip mostrato button.ToolTip = "Plug-in di esportazione delle View in formato .png"; // Icona del Button button.Image = GetEmbeddedImage("GetImages_2.Resources.BOLDsft_16.png"); button.LargeImage = GetEmbeddedImage("GetImages_2.Resources.BOLDsft_32.png"); } ; return(Result.Succeeded); }
/// <summary> /// Metodo per l'apertura della view /// </summary> private void OpenView(UIApplication uiapp) { UIDocument uidoc = uiapp.ActiveUIDocument; Document doc = uidoc.Document; Autodesk.Revit.DB.View viewActive = doc.ActiveView; FilteredElementCollector viewCollector = new FilteredElementCollector(doc); viewCollector.OfClass(typeof(Autodesk.Revit.DB.View)); //string[] elevations = new string[] { "Exterior", "Interior", "Left", "Right" }; // Cambia il valore booleano per attestare che la richiesta della view è multipla _single = false; // Cambia la lingua del name in Inglese string nameViewActive = viewActive.Name; if (nameViewActive == "Exterior" || nameViewActive == "Arrière" || nameViewActive == "Extérieur" || nameViewActive == "Esteriore") { nameViewActive = "Exterior"; } else if (nameViewActive == "Interior" || nameViewActive == "Avant" || nameViewActive == "Intérieur" || nameViewActive == "Interiore") { nameViewActive = "Interior"; } else if (nameViewActive == "Left" || nameViewActive == "Gauche" || nameViewActive == "Sinistra") { nameViewActive = "Left"; } else if (nameViewActive == "Right" || nameViewActive == "Droite" || nameViewActive == "Destra") { nameViewActive = "Right"; } // Verifica se il file si apre su Exterior e nel caso salta direttamente all'esportazione dell'immagine if (nameViewActive == "Exterior" && _imageViewed == "") { _imageViewed = nameViewActive; // Chiama la Form modelessForm = App.thisApp.RetriveForm(); // Mostra nella combobox la vista attiva modelessForm.AssignValueComboBox(); // Salvo ed esco uidoc.SaveAndClose(); } foreach (Autodesk.Revit.DB.View viewElement in viewCollector) { var name = viewElement.Name; // Cambia la lingua del name in Inglese if (name == "Exterior" || name == "Arrière" || name == "Extérieur" || name == "Esteriore") { name = "Exterior"; } else if (name == "Interior" || name == "Avant" || name == "Intérieur" || name == "Interiore") { name = "Interior"; } else if (name == "Left" || name == "Gauche" || name == "Sinistra") { name = "Left"; } else if (name == "Right" || name == "Droite" || name == "Destra") { name = "Right"; } switch (name) { case "Exterior": if (nameViewActive != "Exterior" && nameViewActive != "Interior" && nameViewActive != "Left" && nameViewActive != "Right") { uidoc.RequestViewChange(viewElement); _imageViewed = name; // Chiama la Form modelessForm = App.thisApp.RetriveForm(); // Mostra nella combobox la vista attiva modelessForm.AssignValueComboBox(); // Salvo ed esco uidoc.SaveAndClose(); } break; case "Interior": if (nameViewActive != "Interior" && nameViewActive != "Left" && nameViewActive != "Right") { uidoc.RequestViewChange(viewElement); _imageViewed = name; // Chiama la Form modelessForm = App.thisApp.RetriveForm(); // Mostra nella combobox la vista attiva modelessForm.AssignValueComboBox(); // Salvo ed esco uidoc.SaveAndClose(); } break; case "Left": if (nameViewActive != "Left" && nameViewActive != "Right") { uidoc.RequestViewChange(viewElement); _imageViewed = name; // Chiama la Form modelessForm = App.thisApp.RetriveForm(); // Mostra nella combobox la vista attiva modelessForm.AssignValueComboBox(); // Salvo ed esco uidoc.SaveAndClose(); } break; case "Right": if (nameViewActive != "Right") { uidoc.RequestViewChange(viewElement); _imageViewed = name; // Chiama la Form modelessForm = App.thisApp.RetriveForm(); // Mostra nella combobox la vista attiva modelessForm.AssignValueComboBox(); // Salvo ed esco uidoc.SaveAndClose(); } break; } } }
/// <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.File: { // Cancella i file modificati DeleteFileModified(uiapp); // Recupera il percorso delle immagini _images_path = ModelessForm.thisModForm.ImagesPath; // Chiama la Form modelessForm = App.thisApp.RetriveForm(); // Assegno alla comboBox della View il valore predefinito modelessForm.AssignValueComboBoxDefault(); // Ottiene il Path del file da importare _path = modelessForm.GetPath(); // Definisce il nome del path _pathName = Path.GetFileNameWithoutExtension(_path); // Apre il file selezionato if (_path != "") { OpenFile(uiapp, _path); // Scrive nel TextBox l'ultima operazione effettuata modelessForm.LastFileOpened(); // Estrae il percorso della Directory del _path _pathDirectoryName = Path.GetDirectoryName(_path); // Assegna al valore booleano di controllo un valore true _newPathFamily = true; } _pathOld = _path; break; } case RequestId.View: { // Apro la vista selezionata OpenView(uiapp); break; } case RequestId.SingleView: { // Chiama la Form modelessForm = App.thisApp.RetriveForm(); // Assegno alla comboBox della View il valore predefinito _imageRequest = modelessForm.ViewStringRequest(); // Apro la vista selezionata SingleOpenView(uiapp, _imageRequest); break; } case RequestId.Export: { // Recupera la view attiva UIDocument uidoc = uiapp.ActiveUIDocument; Document doc = uidoc.Document; Autodesk.Revit.DB.View viewActive = doc.ActiveView; var name = viewActive.Name; // Cambia la lingua del name in Inglese if (name == "Exterior" || name == "Arrière" || name == "Extérieur" || name == "Esteriore") { name = "Exterior"; } else if (name == "Interior" || name == "Avant" || name == "Intérieur" || name == "Interiore") { name = "Interior"; } else if (name == "Left" || name == "Gauche" || name == "Sinistra") { name = "Left"; } else if (name == "Right" || name == "Droite" || name == "Destra") { name = "Right"; } // Esegue l'esportazione se la view attiva è una di queste if (name == "Exterior" || name == "Interior" || name == "Right" || name == "Left") { // Chiama la Form modelessForm = App.thisApp.RetriveForm(); // Richiama il valore della View Scale if (_scale != modelessForm.ScaleView) { int valueScale1 = modelessForm.ScaleView; if (valueScale1 != _scale && valueScale1 != 0) { _scale = valueScale1; } // Cambio la scala della vista attiva ChangeScale(uiapp, _path); } if (_detailLevelControl != modelessForm.DetailLevel) { // Cambio il livello di dettaglio della vista attiva ChangeDetailLevel(uiapp, _path); } if (_visualStyleControl != modelessForm.VisualStyle) { // Cambio il livello di dettaglio della vista attiva ChangeVisualStyle(uiapp, _path); } if (_toSave > 0) { // Salvo le modifiche effettuate sulla vista SaveChanges(uiapp); } // Esporta la View attiva ExportViewActive(uiapp, viewActive); // Mostra nel TextBox l'ultima view esportata modelessForm.LastViewExported(); } break; } case RequestId.ViewScaleId: // Chiama la Form modelessForm = App.thisApp.RetriveForm(); // Cattura il valore che viene dalla Form modelessForm.ViewScaleTextBox(); // Richiama il valore della View Scale int valueScale2 = modelessForm.ScaleView; if (valueScale2 != _scale && valueScale2 != 0) { _scale = valueScale2; } // Cambio la scala della vista attiva ChangeScale(uiapp, _path); // Salvo le modifiche effettuate sulla vista SaveChanges(uiapp); _toSave = -1; break; case RequestId.DetailLevelId: // Chiama la Form modelessForm = App.thisApp.RetriveForm(); // Cattura il valore che viene dalla Form _detailLevelControl = modelessForm.DetailLevelComboBox(); // Cambio il livello di dettaglio della vista attiva ChangeDetailLevel(uiapp, _path); // Salvo le modifiche effettuate sulla vista SaveChanges(uiapp); _toSave = -1; break; case RequestId.VisualStyleId: // Chiama la Form modelessForm = App.thisApp.RetriveForm(); // Cattura il valore che viene dalla Form _visualStyleControl = modelessForm.VisualStyleComboBox(); // Cambio il livello di dettaglio della vista attiva ChangeVisualStyle(uiapp, _path); // Salvo le modifiche effettuate sulla vista SaveChanges(uiapp); _toSave = -1; break; case RequestId.Delete: DeleteFileModified(uiapp); MessageBox.Show("Hai cancellato i file modificati."); break; case RequestId.Esc: { // Chiama la Form modelessForm = App.thisApp.RetriveForm(); // Chiude la Form modelessForm.CloseForm(); // Chiude il documento .rfa ancora aperto if (_path.Contains(".rfa")) { CloseDocByCommand(uiapp); } break; } default: { // Una sorta di avviso qui dovrebbe informarci di una richiesta imprevista break; } } } finally { App.thisApp.WakeFormUp(); App.thisApp.ShowFormTop(); } return; }