Пример #1
0
        private List <Curve> CreateFromEachColumnKind(string idSection, StbColumnKind_structure kind, IReadOnlyList <Point3d> sectionPoints)
        {
            List <Curve> curveList;

            switch (kind)
            {
            case StbColumnKind_structure.RC:
                StbSecColumn_RC rcSec = _sections.StbSecColumn_RC.First(sec => sec.id == idSection);
                curveList = SecRcColumnToCurves(rcSec.StbSecFigureColumn_RC.Item, sectionPoints);
                break;

            case StbColumnKind_structure.S:
                StbSecColumn_S sSec = _sections.StbSecColumn_S.First(sec => sec.id == idSection);
                curveList = SecSteelColumnToCurves(sSec.StbSecSteelFigureColumn_S.Items, sectionPoints);
                break;

            case StbColumnKind_structure.SRC:
                StbSecColumn_SRC srcSec = _sections.StbSecColumn_SRC.First(sec => sec.id == idSection);
                curveList = SecRcColumnToCurves(srcSec.StbSecFigureColumn_SRC.Item, sectionPoints);
                break;

            case StbColumnKind_structure.CFT:
            case StbColumnKind_structure.UNDEFINED:
                throw new ArgumentException("Unsupported StbColumnKind");

            default:
                throw new ArgumentOutOfRangeException();
            }

            return(curveList);
        }
Пример #2
0
        private static GH_Structure <GH_String> GetTagStrings(IEnumerable <StbPost> columns, StbSections sections)
        {
            var ghSecStrings = new GH_Structure <GH_String>();

            foreach (var item in columns.Select((column, index) => new { column, index }))
            {
                string secId  = item.column.id_section;
                var    ghPath = new GH_Path(0, item.index);
                StbColumnKind_structure kindStruct = item.column.kind_structure;

                switch (kindStruct)
                {
                case StbColumnKind_structure.RC:
                    StbSecColumn_RC secRc = sections.StbSecColumn_RC.First(i => i.id == secId);
                    ghSecStrings.AppendRange(TagUtils.GetColumnRcSection(secRc.StbSecFigureColumn_RC.Item, secRc.strength_concrete), ghPath);
                    break;

                case StbColumnKind_structure.S:
                    StbSecColumn_S secS = sections.StbSecColumn_S.First(i => i.id == secId);
                    foreach (object figureObj in secS.StbSecSteelFigureColumn_S.Items)
                    {
                        ghSecStrings.AppendRange(TagUtils.GetColumnSSection(figureObj), ghPath);
                    }
                    break;

                case StbColumnKind_structure.SRC:
                    StbSecColumn_SRC secSrc = sections.StbSecColumn_SRC.First(i => i.id == secId);
                    ghSecStrings.AppendRange(TagUtils.GetColumnRcSection(secSrc.StbSecFigureColumn_SRC.Item, secSrc.strength_concrete), ghPath);
                    foreach (object figureObj in secSrc.StbSecSteelFigureColumn_SRC.Items)
                    {
                        ghSecStrings.AppendRange(TagUtils.GetColumnSSection(figureObj), ghPath);
                    }
                    break;

                case StbColumnKind_structure.CFT:
                case StbColumnKind_structure.UNDEFINED:
                    throw new ArgumentException("Unsupported section type.");

                default:
                    throw new ArgumentOutOfRangeException();
                }
            }

            return(ghSecStrings);
        }
Пример #3
0
        private static void AppendSectionInfos(IDictionary <string, string> pDict, StbSections sections)
        {
            var sectionInfo = new List <GH_String>();

            switch (pDict["stb_element_type"])
            {
            case "StbColumn":
            case "StbPost":
                switch (pDict["kind_structure"])
                {
                case "RC":
                    StbSecColumn_RC columnRc = sections.StbSecColumn_RC.First(sec => sec.id == pDict["id_section"]);
                    sectionInfo = GetColumnRcSection(columnRc.StbSecFigureColumn_RC.Item, columnRc.strength_concrete).ToList();
                    break;

                case "SRC":
                    StbSecColumn_SRC columnSrc = sections.StbSecColumn_SRC.First(sec => sec.id == pDict["id_section"]);
                    sectionInfo = GetColumnRcSection(columnSrc.StbSecFigureColumn_SRC.Item, columnSrc.strength_concrete).ToList();
                    foreach (object item in columnSrc.StbSecSteelFigureColumn_SRC.Items)
                    {
                        sectionInfo.AddRange(GetColumnSSection(item).ToList());
                    }
                    break;

                case "S":
                    StbSecSteelFigureColumn_S sFigure = sections.StbSecColumn_S.First(sec => sec.id == pDict["id_section"]).StbSecSteelFigureColumn_S;
                    foreach (object item in sFigure.Items)
                    {
                        sectionInfo.AddRange(GetColumnSSection(item).ToList());
                    }
                    break;
                }
                break;

            case "StbGirder":
            case "StbBeam":
                switch (pDict["kind_structure"])
                {
                case "RC":
                    StbSecBeam_RC beamRc = sections.StbSecBeam_RC.First(sec => sec.id == pDict["id_section"]);
                    foreach (object item in beamRc.StbSecFigureBeam_RC.Items)
                    {
                        sectionInfo.AddRange(GetBeamRcSection(item, beamRc.strength_concrete));
                    }
                    break;

                case "SRC":
                    StbSecBeam_SRC beamSrc = sections.StbSecBeam_SRC.First(sec => sec.id == pDict["id_section"]);
                    foreach (object item in beamSrc.StbSecFigureBeam_SRC.Items)
                    {
                        sectionInfo.AddRange(GetBeamRcSection(item, beamSrc.strength_concrete));
                    }

                    foreach (object item in beamSrc.StbSecSteelFigureBeam_SRC.Items)
                    {
                        sectionInfo.AddRange(GetBeamSSection(item).ToList());
                    }
                    break;

                case "S":
                    StbSecSteelFigureBeam_S sFigure = sections.StbSecBeam_S.First(sec => sec.id == pDict["id_section"]).StbSecSteelFigureBeam_S;
                    foreach (object item in sFigure.Items)
                    {
                        sectionInfo.AddRange(GetBeamSSection(item).ToList());
                    }
                    break;
                }
                break;

            case "StbBrace":
                switch (pDict["kind_structure"])
                {
                case "S":
                    StbSecSteelFigureBrace_S sFigure = sections.StbSecBrace_S.First(sec => sec.id == pDict["id_section"]).StbSecSteelFigureBrace_S;
                    foreach (object item in sFigure.Items)
                    {
                        sectionInfo.AddRange(GetBraceSSection(item).ToList());
                    }
                    break;
                }
                break;

            case "StbSlab":
                switch (pDict["kind_structure"])
                {
                case "RC":
                    StbSecSlab_RC slabRc = sections.StbSecSlab_RC.First(sec => sec.id == pDict["id_section"]);
                    foreach (object item in slabRc.StbSecFigureSlab_RC.Items)
                    {
                        sectionInfo.AddRange(GetSlabRcSection(item, slabRc.strength_concrete).ToList());
                    }
                    break;

                case "DECK":
                    StbSecSlabDeck slabDeck   = sections.StbSecSlabDeck.First(sec => sec.id == pDict["id_section"]);
                    var            deckFigure = slabDeck.StbSecFigureSlabDeck.StbSecSlabDeckStraight;
                    sectionInfo.AddRange(GetSlabDeckSection(deckFigure, slabDeck.strength_concrete).ToList());
                    break;

                case "PRECAST":
                    StbSecSlabPrecast slabPrecast = sections.StbSecSlabPrecast.First(sec => sec.id == pDict["id_section"]);
                    sectionInfo.AddRange(GetSlabPrecastSection(slabPrecast.precast_type, slabPrecast.StbSecProductSlabPrecast, slabPrecast.strength_concrete).ToList());
                    break;
                }
                break;

            case "StbWall":     // RC しかない
                StbSecWall_RC wallRc = sections.StbSecWall_RC.First(sec => sec.id == pDict["id_section"]);
                sectionInfo = GetWallRcSection(wallRc.StbSecFigureWall_RC.StbSecWall_RC_Straight, wallRc.strength_concrete).ToList();
                break;
            }

            foreach ((string str, int i) in sectionInfo.Select((str, i) => (str.ToString(), i)))
            {
                pDict.Add($"Figure{i}", str);
            }
        }