public static string ToNative(this StructuralNodalInfluenceEffect infl)
 {
     return(new GSANodalInfluenceEffect()
     {
         Value = infl
     }.SetGWACommand());
 }
 public static string ToNative(this StructuralNodalInfluenceEffect infl)
 {
     return(SchemaConversion.Helper.ToNativeTryCatch(infl, () => new GSANodalInfluenceEffect()
     {
         Value = infl
     }.SetGWACommand()));
 }
示例#3
0
        public void ParseGWACommand(List <GSANode> nodes)
        {
            if (this.GWACommand == null)
            {
                return;
            }

            var obj = new StructuralNodalInfluenceEffect();

            var pieces = this.GWACommand.ListSplit("\t");

            var counter = 1; // Skip identifier

            obj.Name           = pieces[counter++].Trim(new char[] { '"' });
            obj.GSAEffectGroup = Convert.ToInt32(pieces[counter++]);

            var targetNodeRef = pieces[counter++];

            GSANode targetNode;

            if (nodes != null)
            {
                targetNode = nodes.Where(n => targetNodeRef == n.GSAId.ToString()).FirstOrDefault();

                obj.NodeRef = targetNode.Value.ApplicationId;

                this.SubGWACommand.Add(targetNode.GWACommand);

                targetNode.ForceSend = true;
            }
            else
            {
                return;
            }

            obj.Factor = Convert.ToDouble(pieces[counter++]);
            var effectType = pieces[counter++];

            switch (effectType)
            {
            case "DISP":
                obj.EffectType = StructuralInfluenceEffectType.Displacement;
                break;

            case "FORCE":
                obj.EffectType = StructuralInfluenceEffectType.Force;
                break;

            default:
                return;
            }

            var axis = pieces[counter++];

            if (axis == "GLOBAL")
            {
                obj.Axis = HelperClass.Parse0DAxis(0, Initialiser.Interface, out var temp);
            }
            else if (axis == "LOCAL")
            {
                obj.Axis = targetNode.Value.Axis;
            }
            else
            {
                obj.Axis = HelperClass.Parse0DAxis(Convert.ToInt32(axis), Initialiser.Interface, out string rec, targetNode.Value.Value.ToArray());
                if (rec != null)
                {
                    this.SubGWACommand.Add(rec);
                }
            }

            var dir = pieces[counter++];

            obj.Directions = new StructuralVectorBoolSix(new bool[6]);
            switch (dir.ToLower())
            {
            case "x":
                obj.Directions.Value[0] = true;
                break;

            case "y":
                obj.Directions.Value[1] = true;
                break;

            case "z":
                obj.Directions.Value[2] = true;
                break;

            case "xx":
                obj.Directions.Value[3] = true;
                break;

            case "yy":
                obj.Directions.Value[4] = true;
                break;

            case "zz":
                obj.Directions.Value[5] = true;
                break;
            }

            this.Value = obj;
        }