public void Load(XDocument stbData) { var stbStorys = stbData.Root.Descendants("StbStory"); foreach (var stbStory in stbStorys) { // 必須コード Id.Add((int)stbStory.Attribute("id")); Height.Add((float)stbStory.Attribute("height") / 1000f); switch ((string)stbStory.Attribute("kind")) { case "GENERAL": Kind.Add(KindsStory.GENERAL); break; case "BASEMENT": Kind.Add(KindsStory.BASEMENT); break; case "ROOF": Kind.Add(KindsStory.ROOF); break; case "PENTHOUSE": Kind.Add(KindsStory.PENTHOUSE); break; case "ISOLATION": Kind.Add(KindsStory.ISOLATION); break; default: break; } // 必須ではないコード // リストの長さが合うように、空の場合はstring.Enpty if (stbStory.Attribute("name") != null) { Name.Add((string)stbStory.Attribute("name")); } else { Name.Add(string.Empty); } if (stbStory.Attribute("concrete_strength") != null) { StrengthConcrete.Add((string)stbStory.Attribute("concrete_strength")); } else { StrengthConcrete.Add(string.Empty); } // TODO // 所属節点の読み込み List<List<int>> NodeIdList の Set 部分の作成 } }
public void Load(XDocument stbDoc) { int index = 0; var stbNodes = stbDoc.Root.Descendants("StbNode"); foreach (var stbNode in stbNodes) { // 必須コード Id.Add((int)stbNode.Attribute("id")); X.Add((float)stbNode.Attribute("x") / 1000f); Y.Add((float)stbNode.Attribute("z") / 1000f); // Y-Up対応 Z.Add((float)stbNode.Attribute("y") / 1000f); // 必須ではないコード if (stbNode.Attribute("id_member") != null) { IdMember.Add((int)stbNode.Attribute("id_member")); } else { IdMember.Add(-1); } switch ((string)stbNode.Attribute("kind")) { case "ON_BEAM": Kind.Add(KindsNode.ON_BEAM); break; case "ON_COLUMN": Kind.Add(KindsNode.ON_COLUMN); break; case "ON_GRID": Kind.Add(KindsNode.ON_GRID); break; case "ON_CANTI": Kind.Add(KindsNode.ON_CANTI); break; case "ON_SLAB": Kind.Add(KindsNode.ON_SLAB); break; case "OTHER": Kind.Add(KindsNode.OTHER); break; default: break; } // StbNodeにはない追加した属性 Vertex.Add(new Vector3((float)X[index], (float)Y[index], (float)Z[index])); index++; } }
protected override void ElementLoader(XElement stbElem, StbVersion version, string xmlns) { base.ElementLoader(stbElem, version, xmlns); Height.Add((double)stbElem.Attribute("height")); switch ((string)stbElem.Attribute("kind")) { case "GENERAL": Kind.Add(KindsStory.General); break; case "BASEMENT": Kind.Add(KindsStory.Basement); break; case "ROOF": Kind.Add(KindsStory.Roof); break; case "PENTHOUSE": Kind.Add(KindsStory.Penthouse); break; case "ISOLATION": Kind.Add(KindsStory.Isolation); break; case "DEPENDENCE": Kind.Add(KindsStory.Dependence); break; default: Kind.Add(KindsStory.Any); break; } // 必須ではないコード if (stbElem.Attribute("name") != null) { Name.Add((string)stbElem.Attribute("name")); } else { Name.Add(string.Empty); } if (stbElem.Attribute("concrete_strength") != null) { StrengthConcrete.Add((string)stbElem.Attribute("concrete_strength")); } else { StrengthConcrete.Add(string.Empty); } }
protected override void ElementLoader(XElement stbElem, StbVersion version, string xmlns) { base.ElementLoader(stbElem, version, xmlns); // 必須コード double posX, posY, posZ; switch (version) { case StbVersion.Ver1: posX = (double)stbElem.Attribute("x"); posY = (double)stbElem.Attribute("y"); posZ = (double)stbElem.Attribute("z"); break; case StbVersion.Ver2: posX = (double)stbElem.Attribute("X"); posY = (double)stbElem.Attribute("Y"); posZ = (double)stbElem.Attribute("Z"); break; default: throw new ArgumentOutOfRangeException(nameof(version), version, null); } X.Add(posX); Y.Add(posY); Z.Add(posZ); Position.Add(new Point3(posX, posY, posZ)); // 必須ではないコード if (stbElem.Attribute("id_member") != null) { IdMember.Add((int)stbElem.Attribute("id_member")); } else { IdMember.Add(-1); } // ver2 から必須 switch ((string)stbElem.Attribute("kind")) { case "ON_GIRDER": Kind.Add(KindsNode.OnGirder); break; case "ON_BEAM": Kind.Add(KindsNode.OnBeam); break; case "ON_COLUMN": Kind.Add(KindsNode.OnColumn); break; case "ON_POST": Kind.Add(KindsNode.OnPost); break; case "ON_GRID": Kind.Add(KindsNode.OnGrid); break; case "ON_CANTI": Kind.Add(KindsNode.OnCanti); break; case "ON_SLAB": Kind.Add(KindsNode.OnSlab); break; default: Kind.Add(KindsNode.Other); break; } }
/// <summary> /// Creates a query over the given kind. /// </summary> /// <param name="kind">The kind of the query. Must not be null.</param> public Query(string kind) : this() { var kindExpression = new KindExpression(GaxPreconditions.CheckNotNull(kind, nameof(kind))); Kind.Add(kindExpression); }