Esempio n. 1
0
        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 部分の作成
            }
        }
Esempio n. 2
0
        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++;
            }
        }
Esempio n. 3
0
        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);
            }
        }
Esempio n. 4
0
        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;
            }
        }
Esempio n. 5
0
        /// <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);
        }