diff --git a/GsaGH/Components/4_Analysis/CreateAnalysisTask.cs b/GsaGH/Components/4_Analysis/CreateAnalysisTask.cs index 85158aa84..a1d27cdaf 100644 --- a/GsaGH/Components/4_Analysis/CreateAnalysisTask.cs +++ b/GsaGH/Components/4_Analysis/CreateAnalysisTask.cs @@ -96,7 +96,7 @@ internal static readonly IReadOnlyDictionary _solverTy public const string defaultValueForNode = "all"; private readonly FootfallInputManager _footfallInputManager; - private AnalysisTaskType _type = AnalysisTaskType.Static; + private AnalysisTaskType _analysisTaskType = AnalysisTaskType.Static; public const string _unableToConvertResponseDirectionInputMessage = "Unable to convert response direction input"; public const string _unableToConvertWeightOptionInputMessage = "Unable to convert frequency weighting curve input"; public const string _unableToConvertsExcitationForcesInputMessage @@ -111,6 +111,7 @@ public CreateAnalysisTask() : base($"Create {GsaAnalysisTaskGoo.Name}", public override bool Read(GH_IReader reader) { _casesParamIndex = reader.GetInt32("_casesParamIndex"); + _analysisTaskType = (AnalysisTaskType)reader.GetInt32("_analysisTaskType"); return base.Read(reader); } @@ -118,10 +119,10 @@ public override void SetSelected(int i, int j) { _selectedItems[i] = _dropDownItems[i][j]; if (i == 0) { AnalysisTaskType type = _solverTypes[_selectedItems[0]]; - if (type == _type) { + if (type == _analysisTaskType) { return; } - _type = type; + _analysisTaskType = type; UpdateDropdownItems(); } @@ -131,7 +132,7 @@ public override void SetSelected(int i, int j) { } public override void VariableParameterMaintenance() { - switch (_type) { + switch (_analysisTaskType) { case AnalysisTaskType.StaticPDelta: SetInputAttributes(_casesParamIndex, _analysisCaseInputAttributes); PDeltaCases selectedPDeltaCase = GetKeyFromMatchingValue(_selectedItems[1]); @@ -168,6 +169,7 @@ private PDeltaCases GetKeyFromMatchingValue(string valueToMatch) { public override bool Write(GH_IWriter writer) { writer.SetInt32("_casesParamIndex", _casesParamIndex); + writer.SetInt32("_analysisTaskType", (int)_analysisTaskType); return base.Write(writer); } @@ -203,7 +205,7 @@ protected override void SolveInternal(IGH_DataAccess da) { int id = 0; da.GetData(0, ref id); - string name = _type.ToString(); + string name = _analysisTaskType.ToString(); da.GetData(1, ref name); if (!GetAnalysisCases(da, out List cases)) { @@ -211,7 +213,7 @@ protected override void SolveInternal(IGH_DataAccess da) { } AnalysisTask task = null; - switch (_type) { + switch (_analysisTaskType) { case AnalysisTaskType.Static: task = AnalysisTaskFactory.CreateStaticAnalysisTask(name); break; @@ -232,7 +234,7 @@ protected override void SolveInternal(IGH_DataAccess da) { } break; default: - this.AddRuntimeWarning(GetAnalysisCaseErrorMessage(_type)); + this.AddRuntimeWarning(GetAnalysisCaseErrorMessage(_analysisTaskType)); break; } @@ -247,7 +249,7 @@ protected override void SolveInternal(IGH_DataAccess da) { private bool GetAnalysisCases(IGH_DataAccess da, out List cases) { cases = null; - switch (_type) { + switch (_analysisTaskType) { case AnalysisTaskType.Static: case AnalysisTaskType.StaticPDelta: var ghTypes = new List(); @@ -382,13 +384,13 @@ private bool CreateFootfallTask(IGH_DataAccess da, string name, out AnalysisTask } private static bool CreateModalDynamicTask(IGH_DataAccess da, string name, out AnalysisTask task) { + task = null; GsaModalDynamicAnalysisGoo gsaModalDynamicAnalysisGoo = null; if (da.GetData(2, ref gsaModalDynamicAnalysisGoo)) { GsaModalDynamicAnalysis dynamicAnalysisParameter = gsaModalDynamicAnalysisGoo.Value; task = AnalysisTaskFactory.CreateModalDynamicAnalysisTask(name, new ModalDynamicTaskParameter(dynamicAnalysisParameter.ModeCalculationStrategy, dynamicAnalysisParameter.MassOption, dynamicAnalysisParameter.AdditionalMassDerivedFromLoads, dynamicAnalysisParameter.ModalDamping)); return true; } - task = null; return false; } @@ -506,7 +508,7 @@ private static bool HasDirectionFromString(out ResponseDirection responseDirecti private void UpdateParameters() { UnregisterInputsOverTwo(); - switch (_type) { + switch (_analysisTaskType) { case AnalysisTaskType.Static: _casesParamIndex = 2; Params.RegisterInputParam(new Param_GenericObject()); @@ -567,7 +569,7 @@ private void UpdateDropdownItems() { "Solver", }); - switch (_type) { + switch (_analysisTaskType) { case AnalysisTaskType.StaticPDelta: _spacerDescriptions.Add("P-delta Case"); diff --git a/GsaGH/Helpers/TaskHelper.cs b/GsaGH/Helpers/TaskHelper.cs index 9889d1af7..65c20ffd2 100644 --- a/GsaGH/Helpers/TaskHelper.cs +++ b/GsaGH/Helpers/TaskHelper.cs @@ -25,8 +25,10 @@ public static void ImportAnalysisTask(GsaAnalysisTask task, ref GsaModel model) if (task != null && !existingTasks.Keys.Contains(task.Id)) { int highestTask = existingTasks.Count; var analysisCases = new Dictionary(); - foreach (GsaAnalysisCase analysisCase in task.Cases) { - analysisCases.Add(analysisCase.Id, new AnalysisCase(analysisCase.Name, analysisCase.Definition)); + if (task.Cases != null) { + foreach (GsaAnalysisCase analysisCase in task.Cases) { + analysisCases.Add(analysisCase.Id, new AnalysisCase(analysisCase.Name, analysisCase.Definition)); + } } if (task.ApiTask != null) { if (analysisCases.Count == 0) { @@ -41,7 +43,7 @@ public static void ImportAnalysisTask(GsaAnalysisTask task, ref GsaModel model) public static void ImportAnalysisTask(GsaAnalysisTask task, Model model) { var gsaModel = new GsaModel(model); - ImportAnalysisTask(task, ref gsaModel); + ImportAnalysisTask(task, ref gsaModel); } } }