Beispiel #1
0
 public static string ToNative(this Structural1DInfluenceEffect infl)
 {
     return(SchemaConversion.Helper.ToNativeTryCatch(infl, () => new GSA1DInfluenceEffect()
     {
         Value = infl
     }.SetGWACommand()));
 }
 public static string ToNative(this Structural1DInfluenceEffect infl)
 {
     return(new GSA1DInfluenceEffect()
     {
         Value = infl
     }.SetGWACommand());
 }
        public void ParseGWACommand(List <GSA1DElement> e1Ds)
        {
            if (this.GWACommand == null)
            {
                return;
            }

            var obj = new Structural1DInfluenceEffect();

            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 targetElementRef = pieces[counter++];

            GSA1DElement targetElement;

            if (e1Ds != null)
            {
                targetElement = e1Ds.Where(e => targetElementRef == e.GSAId.ToString()).FirstOrDefault();

                obj.ElementRef = targetElement.Value.ApplicationId;

                this.SubGWACommand.Add(targetElement.GWACommand);
            }
            else
            {
                return;
            }

            var pos = pieces[counter++];

            if (pos.Contains("%"))
            {
                obj.Position = Convert.ToDouble(pos.Replace("%", "")) / 100;
            }
            else
            {
                // Get element length
                var eCoor   = targetElement.Value.Value;
                var eLength = Math.Sqrt(
                    Math.Pow(eCoor[0] - eCoor[3], 2) +
                    Math.Pow(eCoor[1] - eCoor[4], 2) +
                    Math.Pow(eCoor[2] - eCoor[5], 2)
                    );
                obj.Position = Convert.ToDouble(pos) / eLength;
            }

            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;
            }

            counter++; //Axis which doesn't make sense

            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;
        }