public void Execute(UIApplication app) { UIDocument uidoc = app.ActiveUIDocument; Document doc = uidoc.Document; float scale = 0; double overhang = 0; string levelName = "", topLevelName = ""; try { scale = Properties.Settings.Default.Scale; overhang = UnitUtils.ConvertToInternalUnits(Properties.Settings.Default.Overhang, UnitTypeId.Meters); levelName = Properties.Settings.Default.BaseLevelName; topLevelName = Properties.Settings.Default.TopLevelName; } catch (Exception e) { MessageBox.Show(e.Message); PlaceElementsForm.CloseForm(); } string path = PlaceElementsForm.filePath; XYZ roofVector = PlaceElementsForm.roofSelector.SlopeVector; RoofDesign roofDesign = PlaceElementsForm.roofSelector.RoofStyle; double slope = RoofSelector.GetSlopeByType(roofDesign); HouseBuilder builder = new HouseBuilder(doc, levelName, topLevelName, scale); string errorMessage = ""; using (Transaction transaction = new Transaction(doc, "Contruir JSON")) { transaction.Start(); try { builder.BuildJSON(path); } catch (Exception e) { errorMessage += $"\nErro ao construir elementos do JSON: \"{e.Message}\""; } try { builder.CreateFloor(Properties.Settings.Default.FloorName); } catch (Exception e) { errorMessage += $"\nErro ao construir piso: \"{e.Message}\""; } try { builder.CreateCeiling(Properties.Settings.Default.CeilingName); } catch (Exception e) { errorMessage += $"\nErro ao construir laje: \"{e.Message}\""; } try { builder.ClassifyRooms(); } catch (Exception e) { errorMessage += $"\nErro ao classificar ambientes: \"{e.Message}\""; } transaction.Commit(); } using (Transaction transaction = new Transaction(doc, "Contruir Telhado")) { transaction.Start(); try { builder.CreateRoof(overhang, slope, roofVector, roofDesign); } catch (Exception e) { errorMessage += $"\nErro ao construir telhado: \"{e.Message}\""; } transaction.Commit(); } if (errorMessage.Length > 1) { MessageBox.Show(errorMessage, "Erro!", MessageBoxButtons.OK, MessageBoxIcon.Error); } PlaceElementsForm.CloseForm(); }