////[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Reliability", "CA2000:Dispose objects before losing scope")] public Result Execute( ExternalCommandData commandData, ref string message, ElementSet elements) { if (commandData == null) { return(Result.Failed); } UIDocument udoc = commandData.Application.ActiveUIDocument; var vm = new ViewModels.SolarViewsViewModel(commandData.Application.ActiveUIDocument); SCaddinsApp.WindowManager.ShowDialog(vm, null, ViewModels.SolarViewsViewModel.DefaultViewSettings); if (vm.CreateAnalysisView) { #if REVIT2021 var internalUnitsGridSize = UnitUtils.ConvertToInternalUnits(vm.AnalysisGridSize, UnitTypeId.Millimeters); #else var internalUnitsGridSize = UnitUtils.ConvertToInternalUnits(vm.AnalysisGridSize, DisplayUnitType.DUT_MILLIMETERS); #endif SolarAnalysisManager.CreateTestFaces(vm.FaceSelection, vm.MassSelection, internalUnitsGridSize, udoc, udoc.ActiveView); } return(Result.Succeeded); }
////[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Reliability", "CA2000:Dispose objects before losing scope")] public Result Execute( ExternalCommandData commandData, ref string message, ElementSet elements) { if (commandData == null) { return(Result.Failed); } UIDocument udoc = commandData.Application.ActiveUIDocument; if (udoc.Document.IsFamilyDocument) { SCaddinsApp.WindowManager.ShowErrorMessageBox("Families not supported", "Solar analysis tools will not work in a family environment."); return(Result.Failed); } var vm = new ViewModels.SolarViewsViewModel(commandData.Application.ActiveUIDocument); SCaddinsApp.WindowManager.ShowDialog(vm, null, ViewModels.SolarViewsViewModel.DefaultViewSettings); if (vm.CreateAnalysisView) { #if REVIT2021 || REVIT2022 || REVIT2023 var internalUnitsGridSize = UnitUtils.ConvertToInternalUnits(vm.AnalysisGridSize, UnitTypeId.Millimeters); #else var internalUnitsGridSize = UnitUtils.ConvertToInternalUnits(vm.AnalysisGridSize, DisplayUnitType.DUT_MILLIMETERS); #endif SolarAnalysisManager.CreateTestFaces(vm.FaceSelection, vm.MassSelection, internalUnitsGridSize, udoc, udoc.ActiveView); } if (vm.DrawSolarRay) { SolarAnalysisManager.DrawSolarRayAsModelLine(udoc, vm.SolarRayLength); } return(Result.Succeeded); }