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 <GSA2DElement> elements, List <GSA2DMember> members) { if (this.GWACommand == null) { return; } var obj = new Structural2DLoad(); var pieces = this.GWACommand.ListSplit("\t"); var counter = 1; // Skip identifier obj.Name = pieces[counter++].Trim(new char[] { '"' }); if (Initialiser.Settings.TargetLayer == GSATargetLayer.Analysis) { var targetElements = Initialiser.Interface.ConvertGSAList(pieces[counter++], SpeckleGSAInterfaces.GSAEntity.ELEMENT); if (elements != null) { var elems = elements.Where(n => targetElements.Contains(n.GSAId)).ToList(); obj.ElementRefs = elems.Select(n => (string)n.Value.ApplicationId).ToList(); this.SubGWACommand.AddRange(elems.Select(n => n.GWACommand)); } } else if (Initialiser.Settings.TargetLayer == GSATargetLayer.Design) { var targetGroups = HelperClass.GetGroupsFromGSAList(pieces[counter++]); if (members != null) { var membs = members.Where(m => targetGroups.Contains(m.Group)).ToList(); obj.ElementRefs = membs.Select(m => (string)m.Value.ApplicationId).ToList(); this.SubGWACommand.AddRange(membs.Select(n => n.GWACommand)); } } obj.LoadCaseRef = HelperClass.GetApplicationId(typeof(GSALoadCase).GetGSAKeyword(), Convert.ToInt32(pieces[counter++])); var axis = pieces[counter++]; this.Axis = axis == "GLOBAL" ? 0 : -1;// Convert.ToInt32(axis); // TODO: Assume local if not global obj.AxisType = (axis == "LOCAL") ? StructuralLoadAxisType.Local : StructuralLoadAxisType.Global; counter++; // Type. TODO: Skipping since we're taking the average this.Projected = pieces[counter++] == "YES"; obj.Loading = new StructuralVectorThree(new double[3]); var direction = pieces[counter++].ToLower(); var values = pieces.Skip(counter).Select(p => Convert.ToDouble(p)).ToArray(); switch (direction.ToUpper()) { case "X": obj.Loading.Value[0] = values.Average(); break; case "Y": obj.Loading.Value[1] = values.Average(); break; case "Z": obj.Loading.Value[2] = values.Average(); break; default: // TODO: Error case maybe? break; } this.Value = obj; }
public void ParseGWACommand(List <GSA1DElement> elements, List <GSA1DMember> members) { if (this.GWACommand == null) { return; } var obj = new Structural1DLoad(); var pieces = this.GWACommand.ListSplit("\t"); var counter = 0; // Skip identifier var identifier = pieces[counter++]; obj.Name = pieces[counter++].Trim(new char[] { '"' }); if (Initialiser.Settings.TargetLayer == GSATargetLayer.Analysis) { var targetElements = Initialiser.Interface.ConvertGSAList(pieces[counter++], SpeckleGSAInterfaces.GSAEntity.ELEMENT); if (elements != null) { var elems = elements.Where(n => targetElements.Contains(n.GSAId)).ToList(); obj.ElementRefs = elems.Select(n => (string)n.Value.ApplicationId).ToList(); this.SubGWACommand.AddRange(elems.Select(n => n.GWACommand)); } } else if (Initialiser.Settings.TargetLayer == GSATargetLayer.Design) { var targetGroups = HelperClass.GetGroupsFromGSAList(pieces[counter++]); if (members != null) { var membs = members.Where(m => targetGroups.Contains(m.Group)).ToList(); obj.ElementRefs = membs.Select(m => (string)m.Value.ApplicationId).ToList(); this.SubGWACommand.AddRange(membs.Select(n => n.GWACommand)); } } obj.LoadCaseRef = HelperClass.GetApplicationId(typeof(GSALoadCase).GetGSAKeyword(), Convert.ToInt32(pieces[counter++])); var axis = pieces[counter++]; this.Axis = axis == "GLOBAL" ? 0 : -1;// Convert.ToInt32(axis); // TODO: Assume local if not global this.Projected = pieces[counter++] == "YES"; obj.Loading = new StructuralVectorSix(new double[6]); var direction = pieces[counter++].ToLower(); double value = 0; // TODO: Only reads UDL load properly if (identifier.Contains("LOAD_BEAM_POINT.2")) { counter++; // Position counter++; // Value value = 0; } else if (identifier.Contains("LOAD_BEAM_UDL.2")) { value = Convert.ToDouble(pieces[counter++]); } else if (identifier.Contains("LOAD_BEAM_LINE.2")) { value = Convert.ToDouble(pieces[counter++]); value += Convert.ToDouble(pieces[counter++]); value /= 2; } else if (identifier.Contains("LOAD_BEAM_PATCH.2")) { counter++; // Position value = Convert.ToDouble(pieces[counter++]); counter++; // Position value += Convert.ToDouble(pieces[counter++]); value /= 2; } else if (identifier.Contains("LOAD_BEAM_TRILIN.2")) { counter++; // Position value = Convert.ToDouble(pieces[counter++]); counter++; // Position value += Convert.ToDouble(pieces[counter++]); value /= 2; } else { value = 0; } switch (direction.ToUpper()) { case "X": obj.Loading.Value[0] = value; break; case "Y": obj.Loading.Value[1] = value; break; case "Z": obj.Loading.Value[2] = value; break; case "XX": obj.Loading.Value[3] = value; break; case "YY": obj.Loading.Value[4] = value; break; case "ZZ": obj.Loading.Value[5] = value; break; default: // TODO: Error case maybe? 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 = HelperClass.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 = HelperClass.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; }