public static string ToNative(this Structural2DLoad load) { return(SchemaConversion.Helper.ToNativeTryCatch(load, () => new GSA2DLoad() { Value = load }.SetGWACommand())); }
public static string ToNative(this Structural2DLoad load) { return(new GSA2DLoad() { Value = load }.SetGWACommand()); }
public static string ToNative(this Structural2DLoad load) { return((Initialiser.Settings.TargetLayer == GSATargetLayer.Analysis) ? new GSA2DLoadAnalysisLayer() { Value = load }.SetGWACommand() : new GSA2DLoadDesignLayer() { Value = load }.SetGWACommand()); }
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; }