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());
 }
Exemple #3
0
 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;
        }