public string SetGWACommand(int group = 0) { if (this.Value == null) { return(""); } var member = this.Value as Structural1DElement; var keyword = typeof(GSA1DMember).GetGSAKeyword(); var index = Initialiser.Cache.ResolveIndex(typeof(GSA1DMember).GetGSAKeyword(), member.ApplicationId); var propRef = 0; try { propRef = (member.ElementType == Structural1DElementType.Spring) ? Initialiser.Cache.LookupIndex(typeof(GSASpringProperty).GetGSAKeyword(), member.PropertyRef).Value : Initialiser.Cache.LookupIndex(typeof(GSA1DProperty).GetGSAKeyword(), member.PropertyRef).Value; } catch { } var ls = new List <string> { "SET", keyword + ":" + HelperClass.GenerateSID(member), index.ToString(), member.Name == null || member.Name == "" ? " " : member.Name, "NO_RGB" }; if (member.ElementType == Structural1DElementType.Beam) { ls.Add("BEAM"); } else if (member.ElementType == Structural1DElementType.Column) { ls.Add("COLUMN"); } else if (member.ElementType == Structural1DElementType.Cantilever) { ls.Add("CANTILEVER"); } else { ls.Add("1D_GENERIC"); } ls.Add(propRef.ToString()); ls.Add(group != 0 ? group.ToString() : index.ToString()); // TODO: This allows for targeting of elements from members group var topo = ""; for (var i = 0; i < member.Value.Count(); i += 3) { topo += HelperClass.NodeAt(member.Value[i], member.Value[i + 1], member.Value[i + 2], Initialiser.Settings.CoincidentNodeAllowance).ToString() + " "; } ls.Add(topo); ls.Add("0"); // Orientation node try { ls.Add(HelperClass.Get1DAngle(member.Value.ToArray(), member.ZAxis).ToString()); } catch { ls.Add("0"); } //ls.Add(member.GSAMeshSize == 0 ? "0" : member.GSAMeshSize.ToString()); // Target mesh size ls.Add(member.GSAMeshSize == null ? "0" : member.GSAMeshSize.ToString()); // Target mesh size ls.Add("MESH"); // TODO: What is this? ls.Add((member.ElementType == Structural1DElementType.Spring) ? "SPRING" : "BEAM"); // Element type ls.Add("0"); // Fire ls.Add("0"); // Time 1 ls.Add("0"); // Time 2 ls.Add("0"); // Time 3 ls.Add("0"); // Time 4 ls.Add((member.GSADummy.HasValue && member.GSADummy.Value) ? "DUMMY" : "ACTIVE"); try { if (member.EndRelease[0].Value.SequenceEqual(ParseEndReleases(1).Value)) { ls.Add("1"); } else if (member.EndRelease[0].Value.SequenceEqual(ParseEndReleases(2).Value)) { ls.Add("2"); } else if (member.EndRelease[0].Value.SequenceEqual(ParseEndReleases(3).Value)) { ls.Add("3"); } else { if (member.EndRelease[0].Value.Skip(3).Take(3).SequenceEqual(new bool[] { false, false, false })) { ls.Add("2"); } else { ls.Add("1"); } } } catch { ls.Add("2"); } try { if (member.EndRelease[1].Value.SequenceEqual(ParseEndReleases(1).Value)) { ls.Add("1"); } else if (member.EndRelease[1].Value.SequenceEqual(ParseEndReleases(2).Value)) { ls.Add("2"); } else if (member.EndRelease[1].Value.SequenceEqual(ParseEndReleases(3).Value)) { ls.Add("3"); } else { if (member.EndRelease[1].Value.Skip(3).Take(3).SequenceEqual(new bool[] { false, false, false })) { ls.Add("2"); } else { ls.Add("1"); } } } catch { ls.Add("2"); } ls.Add("AUTOMATIC"); // Effective length option ls.Add("0"); // Pool ls.Add("0"); // Height ls.Add("MAN"); // Auto offset 1 ls.Add("MAN"); // Auto offset 2 ls.Add("NO"); // Internal auto offset try { var subLs = new List <string> { member.Offset[0].Value[0].ToString(), // Offset x-start member.Offset[1].Value[0].ToString(), // Offset x-end member.Offset[0].Value[1].ToString(), member.Offset[0].Value[2].ToString() }; ls.AddRange(subLs); } catch { ls.Add("0"); ls.Add("0"); ls.Add("0"); ls.Add("0"); } ls.Add("ALL"); // Exposure return(string.Join("\t", ls)); }
public string SetGWACommand(int group = 0) { if (this.Value == null) { return(""); } var element = this.Value as Structural1DElement; var keyword = typeof(GSA1DElement).GetGSAKeyword(); var index = Initialiser.Cache.ResolveIndex(typeof(GSA1DElement).GetGSAKeyword(), element.ApplicationId); var propRef = 0; try { propRef = Initialiser.Cache.LookupIndex(typeof(GSA1DProperty).GetGSAKeyword(), element.PropertyRef).Value; } catch { } var ls = new List <string> { "SET", keyword + ":" + HelperClass.GenerateSID(element), index.ToString(), element.Name == null || element.Name == "" ? " " : element.Name, "NO_RGB", "BEAM", // Type propRef.ToString(), group.ToString() }; for (var i = 0; i < element.Value.Count(); i += 3) { ls.Add(HelperClass.NodeAt(element.Value[i], element.Value[i + 1], element.Value[i + 2], Initialiser.Settings.CoincidentNodeAllowance).ToString()); } ls.Add("0"); // Orientation Node try { ls.Add(HelperClass.Get1DAngle(element.Value.ToArray(), element.ZAxis).ToString()); } catch { ls.Add("0"); } try { var subLs = new List <string>(); if (element.EndRelease[0].Value.Any(x => x) || element.EndRelease[1].Value.Any(x => x)) { subLs.Add("RLS"); var end1 = ""; end1 += element.EndRelease[0].Value[0] ? "R" : "F"; end1 += element.EndRelease[0].Value[1] ? "R" : "F"; end1 += element.EndRelease[0].Value[2] ? "R" : "F"; end1 += element.EndRelease[0].Value[3] ? "R" : "F"; end1 += element.EndRelease[0].Value[4] ? "R" : "F"; end1 += element.EndRelease[0].Value[5] ? "R" : "F"; subLs.Add(end1); var end2 = ""; end2 += element.EndRelease[1].Value[0] ? "R" : "F"; end2 += element.EndRelease[1].Value[1] ? "R" : "F"; end2 += element.EndRelease[1].Value[2] ? "R" : "F"; end2 += element.EndRelease[1].Value[3] ? "R" : "F"; end2 += element.EndRelease[1].Value[4] ? "R" : "F"; end2 += element.EndRelease[1].Value[5] ? "R" : "F"; subLs.Add(end2); ls.AddRange(subLs); } else { ls.Add("NO_RLS"); } } catch { ls.Add("NO_RLS"); } try { var subLs = new List <string> { element.Offset[0].Value[0].ToString(), // Offset x-start element.Offset[1].Value[0].ToString(), // Offset x-end element.Offset[0].Value[1].ToString(), element.Offset[0].Value[2].ToString() }; ls.AddRange(subLs); } catch { ls.Add("0"); ls.Add("0"); ls.Add("0"); ls.Add("0"); } //ls.Add("NORMAL"); // Action // TODO: EL.4 SUPPORT ls.Add((element.GSADummy.HasValue && element.GSADummy.Value) ? "DUMMY" : ""); return(string.Join("\t", ls)); }