public void ParseGWACommand(List <GSA2DElement> e2Ds, List <GSA2DMember> m2Ds) { if (this.GWACommand == null) { return; } var obj = new Structural2DThermalLoad(); var pieces = this.GWACommand.ListSplit("\t"); var counter = 1; // Skip identifier obj.Name = pieces[counter++]; obj.ApplicationId = HelperClass.GetApplicationId(this.GetGSAKeyword(), this.GSAId); var elementList = pieces[counter++]; obj.ElementRefs = new List <string>(); if (Initialiser.Settings.TargetLayer == GSATargetLayer.Analysis) { var elementId = Initialiser.Interface.ConvertGSAList(elementList, SpeckleGSAInterfaces.GSAEntity.ELEMENT); foreach (var id in elementId) { IGSASpeckleContainer elem = e2Ds.Where(e => e.GSAId == id).FirstOrDefault(); if (elem == null) { continue; } obj.ElementRefs.Add((elem.Value as SpeckleObject).ApplicationId); this.SubGWACommand.Add(elem.GWACommand); } } else { var groupIds = HelperClass.GetGroupsFromGSAList(elementList).ToList(); foreach (var id in groupIds) { var memb2Ds = m2Ds.Where(m => m.Group == id); obj.ElementRefs.AddRange(memb2Ds.Select(m => (string)m.Value.ApplicationId)); this.SubGWACommand.AddRange(memb2Ds.Select(m => m.GWACommand)); } } obj.LoadCaseRef = HelperClass.GetApplicationId(typeof(GSALoadCase).GetGSAKeyword(), Convert.ToInt32(pieces[counter++])); var loadingType = pieces[counter++]; switch (loadingType) { case "CONS": obj.TopTemperature = Convert.ToDouble(pieces[counter++]); obj.BottomTemperature = obj.TopTemperature; break; case "DZ": obj.TopTemperature = Convert.ToDouble(pieces[counter++]); obj.BottomTemperature = Convert.ToDouble(pieces[counter++]); break; case "GEN": // GENERALIZE THIS TO AN AVERAGE for (var i = 0; i < 3; i++) { obj.TopTemperature += Convert.ToDouble(pieces[counter++]); obj.BottomTemperature += Convert.ToDouble(pieces[counter++]); } obj.TopTemperature /= 4; obj.BottomTemperature /= 4; break; } this.Value = obj; }
public void ParseGWACommand(List <GSA1DElement> e1Ds, List <GSA2DElement> e2Ds, List <GSA1DMember> m1Ds, List <GSA2DMember> m2Ds) { if (this.GWACommand == null) { return; } var obj = new StructuralConstructionStage(); var pieces = this.GWACommand.ListSplit("\t"); var counter = 1; // Skip identifier this.GSAId = Convert.ToInt32(pieces[counter++]); obj.ApplicationId = Helper.GetApplicationId(this.GetGSAKeyword(), this.GSAId); obj.Name = pieces[counter++]; counter++; //Skip colour var elementList = pieces[counter++]; obj.ElementRefs = new List <string>(); if (Initialiser.Settings.TargetLayer == GSATargetLayer.Analysis) { var elementId = Initialiser.Interface.ConvertGSAList(elementList, SpeckleGSAInterfaces.GSAEntity.ELEMENT); foreach (var id in elementId) { IGSASpeckleContainer elem = e1Ds.Where(e => e.GSAId == id).FirstOrDefault(); if (elem == null) { elem = e2Ds.Where(e => e.GSAId == id).FirstOrDefault(); } if (elem == null) { continue; } obj.ElementRefs.Add((elem.Value as SpeckleObject).ApplicationId); this.SubGWACommand.Add(elem.GWACommand); } } else { var groupIds = Helper.GetGroupsFromGSAList(elementList).ToList(); foreach (var id in groupIds) { var memb1Ds = m1Ds.Where(m => m.Group == id); var memb2Ds = m2Ds.Where(m => m.Group == id); obj.ElementRefs.AddRange(memb1Ds.Select(m => (string)m.Value.ApplicationId)); obj.ElementRefs.AddRange(memb2Ds.Select(m => (string)m.Value.ApplicationId)); this.SubGWACommand.AddRange(memb1Ds.Select(m => m.GWACommand)); this.SubGWACommand.AddRange(memb2Ds.Select(m => m.GWACommand)); } } counter++; //Skip creep coefficient obj.StageDays = Convert.ToInt32(pieces[counter++]); this.Value = obj; }